我的域實體每個都有一組「固定」屬性和一組可在運行時添加的「動態」屬性。我通過使用NHibernate的動態組件功能來處理這個問題。NHibernate:根據鑑別器映射不同的動態組件
public class Product {
public virtual Guid Id { get; }
public virtual string Name { get; set;}
public virtual IDictionary DynamicComponents { get; }
}
現在我有以下的情況
public class Customer {
public virtual Guid Id { get; }
public virtual string Type { get; set;}
public virtual IDictionary DynamicProperties { get; }
}
凡CustomerType是像「在線」或「InPerson」。此外在線客戶具有動態特性「名稱」和「ip地址」和InPerson客戶具有動態特性「名稱」和「推銷員」。
哪些客戶類型可用,並且它們的額外屬性是在用於在應用程序啓動時生成HBM文件的元數據中配置的。
我可以想出一些方法來使用中間DTO層將它們連接在一起,但在這種情況下,NHibernate中是否有任何支持?唯一的困難似乎是,所有不同的「客戶類型」都映射到同一個客戶類別。
它們不能是子類,因爲它們是準動態的。在運行期間,我需要創建一個新類型的Person,包括重建映射。就像NHibernate允許你使用鑑別器將兩個子類映射到3個表一樣,我希望只有在鑑別器是某種方式時才使用某個映射。它的尷尬,我知道但必要給我們一些非常具體的限制,不幸的是NH是迄今爲止最好的ORM準動態或其他 – 2010-04-29 02:03:40