2009-10-15 41 views
6

için varsayılan değer atanması, bir sütunun varsayılan değerini eşlemek için nasıl ayarlanabileceğimi bilen bir kullanıcıdır, örn. Ben eşlemelerden DB oluşturduğumda varsayılan değer olarak getdate() sahip DateTime sütunu olurdu? FluentNHibernate - DB sütunları (SQL Server)

Öyle çalıştı kadar bu (exactlly ihtiyacım olanı gibi görünüyor) ama oldukça varsayılan değeri kullanmak yerine kodunda geçerli DateTime atamak

this.Map(x => x.LastPersistedOn, "DateModified") 
    .Access.Property() 
    .Default("getdate()"); 
+0

-

public class SampleEntityMap : ClassMap<SampleEntity> { public SampleEntityMap() { Map(x => x.DateTimeProperty, "DateTimeColumn") .Access.Property() //actually not necessary .Not.Nullable() .Default("getDate()"); } } 

Bununla
Haritalama

public class SampleEntity { public virtual DateTime DateTimeProperty { get; set; } } 

(konsola çıkışından) aşağıdaki sql

create table SampleEntity( DateTimeColumn DATETIME default getDate() not null ) 

üretecek akıcı 1.0 sorunu ve se yoktur bir çözüm olmak için - bunu olaylar aracılığıyla yapabilirsiniz, ancak bu her zaman uygun değildir. Başka biri var mı? – row1

+0

[NHibernate + default getdate() sütunu] 'nın olası kopyası (http://stackoverflow.com/questions/1145197/nhibernate-default-getdate-column) –

cevap

6

Sadece bazı varsayılan ayarı değerleri çalıştı, başkalarının düşüncelerini duymak güzel olurdu ve beklendiği gibi çalıştı. 24.05.2010'da Git'ten aldığım gibi Fluent kullanıyorum, böylece kopyanızı güncellemek probleminizi çözebilir. Aynı sahip
Dom

4

Bunu yapmanın yolu, çalışmıyor veri tabanı. Daha sonra normal bir sütun gibi davranın. Öncelikle modele dayalı bir tasarım arka planından geldiğimde biraz garip görünüyordu, ancak POCO seviyesinde varsayılan değerleri yönetmek DDD yolunu yapıyor.

çok

+1

Bu konuyla ilgili sorun, kullanıcıların saatlerine bağlı olmasıdır. Eğer son kullanıcı değilse, eğer uygulama iki farklı saat diliminde çalışıyorsa, zaten yeterince karmaşıktır. – hometoast

+0

Düşünecek başka bir şey var olan veriler. Bunun eski bir yazı olduğunu biliyorum, ancak mevcut bir sınıf/tablo/haritaya yeni bir alan ekliyorsanız, her zaman varsayılan değerin normalde eksik olanı olmasını istemezsiniz (örneğin, istediğiniz bir boolean sütunu) Var olan tüm kayıtlarda geçerli olan varsayılan değer) – DevTheo