2010-11-09 4 views
4

Nous travaillons avec une base de données héritée qui utilise les colonnes uniquesidentifier du serveur SQL pour la simultanéité. Nous devons donc utiliser une colonne Guid en tant que colonne de version. Une idée de comment nous pourrions y parvenir dans NHibernate?Utilisation d'une colonne Version de Guid dans NHibernate

Nous définissons actuellement notre application en utilisant Fluent NHibernate comme Guid typée propriété appelée ConcurrencyId en utilisant cet extrait

Version(x => x.ConcurrencyId)

Il en résulte l'erreur suivante lors de la création d'une session

System.InvalidCastException : Unable to cast object of type 'NHibernate.Type.GuidType' to type 'NHibernate.Type.IVersionType'.

Toutes les idées sur la façon dont cela pourrait être fait, couramment ou autrement, seraient appréciées. Nous sommes heureux de pirater la source si cela peut être fait pour fonctionner.

+1

Qu'arrive-t-il au guid lorsque la prochaine version est générée? L'augmenter avec un octet à la fin? Est-ce que Guid.empty n'est pas sauvegardé? – Paco

+0

J'imagine que vous créez un nouveau Guid? Type de type de données d'horodatage similaire. – dotjoe

Répondre

2

Vous pouvez essayer d'implémenter un type personnalisé implémentant NHibernate.UserTypes.IUserVersionType. (Je pense que cette suggestion peut se rapporter à une version plus récente de NHibernate que vous utilisez.)

+0

Cela fonctionne avec FluentNHibernate 1.1. J'ai posté le code sur mon blog http://www.alexlea.me/2010/11/using-guid-as-version-column-in.html. Merci! – Alex

+0

Salut, et merci pour la mention dans votre blog! – yfeldblum

Questions connexes