我有一個數據庫接受沒有空值,並有一個默認的每個字段。使用流利的nHibernate,如果我有一個組件有一些(但不是所有的屬性)填充,我得到一個插入錯誤。我只是想知道如何將DynamicInsert標誌降低到組件級別。也許已經很晚了,但我會把它放在這裏,看看它發生了什麼。nhibernate動態插入失敗,有一些空的組件屬性
映射:
public ClientMap()
{
Table("Clients");
DynamicInsert();
DynamicUpdate();
CompositeId()
.KeyProperty(x => x.Accountnumber, "acct_no")
.KeyProperty(x => x.Transferaccount, "tr_acct_no");
Component(c => c.Address,
m =>{
m.Map(x => x.Streetaddress, "coaddress").Not.Nullable().Default("");
m.Map(x => x.City, "cocity").Not.Nullable().Default("");
m.Map(x => x.Postalcode, "costate").Not.Nullable().Default("");
m.Map(x => x.State, "cozip").Not.Nullable().Default(""); });
}
測試:
Client nw = new Client{ Address = new Address{Streetaddress = "my address"},Accountnumber = "6543219",Transferaccount = "1"};
IRepository repo2 = new Repository(session);
repo2.Save(nw);
錯誤:
無法插入:[BusinessObjects.Client#BusinessObjects.Client] [SQL:INSERT INTO客戶端(coaddress, VALUES(?,?,?,?,?,?)]
在構造函數中設置默認屬性,然後允許我繞插入錯誤。接下來的問題將是更新策略,當某些事情沒有改變時。如果一個屬性發生變化,整個組件都會得到更新,必須有一個標準的方法來解決這個問題,因爲並不是所有對象的消費者都需要所有的數據。 – 2009-12-23 18:02:47