2009-07-08 7 views
6

Je suis un débutant avec NHibernate, alors s'il vous plaît, faites-moi confiance. Imaginons que j'ai une propriété pour CreatedDate, et je voulais qu'elle soit remplie avec la valeur datetime du serveur SQL. La solution possible que j'ai trouvé est, pour marquer cette propriété en tant que "generated = always" avec "insert = false" et "update = false", puis définir la valeur par défaut pour le serveur CreatedDate sur sql niveau (je veux dire la colonne de base de données), à "Getdate()".Date de création de la base de données sur l'insertion avec NHibernate

Est-ce la bonne approche? Merci pour votre temps, toute suggestion sera bien appréciée.

Répondre

2

Une autre solution consiste à insérer la date dans SQLServer, lorsque l'enregistrement est créé. Rendre la colonne non-nullable, et définissez sa valeur par défaut à la foncton SQL GETDATE(). Lorsque l'enregistrement est créé, il sera daté/horodaté. Mappez-le dans NHibernate comme n'importe quelle autre propriété DateTime.

+0

C'est ce que nous faisons, et nous avons une règle interne que toutes les colonnes DateAdded et DateModified sont faites de cette manière. Simple et fonctionne. – Perhentian

1

Vous pouvez mapper la propriété en tant que date et heure. Ensuite, avant toute insertion/mise à jour, vous pouvez obtenir la date de la base de données, comme ceci:

myEntity.LastModifiedDate = Session.CreateSQLQuery("SELECT GETDATE()").UniqueResult<DateTime>(); 
Session.SaveOrUpdate(myEntity); 
Questions connexes