Tôi có một lớp miền giống như thế này. Tôi muốn NHibernate để lưu giá trị hiện tại của LastUpdate
khi chèn/cập nhật để tôi có thể sử dụng trong truy vấn, nhưng bỏ qua nó khi truy xuất Foo
từ cơ sở dữ liệu và để cho chính đối tượng tính toán lại giá trị khi tôi thực sự truy cập.Lập bản đồ một thuộc tính chỉ đọc mà không cần thiết lập bằng cách sử dụng Fluent NHibernate
public class Foo {
public DateTime LastUpdate {
get {
/* Complex logic to determine last update by inspecting History */
return value;
}
}
public IEnumerable<History> History { get; set; }
/* etc. */
}
lập bản đồ của tôi cho Foo
trông như thế này:
public class FooMap : ClassMap<Foo> {
Map(x => x.LastUpdate)
.ReadOnly();
HasMany(x => x.History);
// etc...
}
Tôi nghĩ rằng ReadOnly()
là những gì tôi muốn thực hiện điều này, nhưng khi tôi cố gắng để tạo ra một SessionFactory tôi nhận được ngoại lệ sau đây:
Error: FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
---> NHibernate.PropertyNotFoundException: Could not find a setter for property 'LastUpdate' in class 'Foo'.
Thuộc tính không có setter vì không được đặt, chỉ đọc từ. Có phải ReadOnly()
điều chính xác cần làm ở đây không? Nếu không, cái gì?
(NHibernate v3.0b1, thành thạo NHibernate v1.1)
Các ReadOnly() ; chỉ các bộ trong bản đồ tạo ra xml luồng các thuộc tính insert = "false" và update = "false" của thuộc tính LastUpdate. – tolism7