2009-10-15 33 views
6

có ai biết cách tôi có thể đặt thông qua ánh xạ giá trị mặc định của một cột hay không, ví dụ: khi tôi tạo DB từ ánh xạ, tôi sẽ có cột DateTime có getdate() làm giá trị mặc định?FluentNHibernate - Đặt giá trị mặc định cho các cột DB (SQL Server)

tôi đã cố gắng cho đến nay này (trông exactlly giống như những gì tôi cần) nhưng nó không hoạt động

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

Tôi có cùng vấn đề thông thạo 1.0 và không có em là một giải pháp - bạn có thể làm điều đó thông qua các sự kiện nhưng điều này không phải lúc nào cũng phù hợp. Ai khác? – row1

+0

có thể trùng lặp của [NHibernate + mặc định getdate() cột] (http://stackoverflow.com/questions/1145197/nhibernate-default-getdate-column) –

Trả lời

6

Tôi vừa thử đặt một số giá trị mặc định và nó hoạt động như mong đợi. Tôi đang sử dụng lưu loát khi truy xuất từ ​​Git vào ngày 24.05.2010 để cập nhật bản sao của bạn có thể giải quyết được sự cố của bạn.
Mapping

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

Với

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

này sẽ tạo ra sql sau (từ đầu ra để giao diện điều khiển)

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

-
Dom

4

Cách để làm điều này là để gán DateTime hiện trong mã thay vì sử dụng giá trị mặc định trong cơ sở dữ liệu. Sau đó coi nó như một cột bình thường. Có vẻ hơi lạ với tôi lúc đầu đến từ một nền tảng thiết kế dựa trên mô hình, nhưng việc quản lý các giá trị mặc định ở cấp POCO là cách DDD để làm điều đó.

Sẽ rất hữu ích khi nghe ý kiến ​​của người khác quá

+1

Vấn đề tôi có với điều này là nó phụ thuộc vào đồng hồ người dùng. Nếu không phải là người dùng cuối nếu bạn có ứng dụng đang chạy trong hai múi giờ khác nhau thì nó đã đủ phức tạp rồi. – hometoast

+0

Điều gì đó khác để suy nghĩ về dữ liệu hiện có. Tôi biết đây là một bài cũ, nhưng nếu bạn đang thêm một trường mới vào một lớp/bảng/bản đồ hiện có, bạn không luôn muốn giá trị mặc định là những gì bình thường là defualt (ví dụ một cột boolean mà bạn muốn mặc định là đúng trong tất cả các bản ghi hiện có) – DevTheo

Các vấn đề liên quan