2012-07-31 39 views
0

有了單向映射和Cascade.All集合,是否可以通過設置一個有效的FK來保存一個孩子,然後做一個Save或SaveOrUpdate?NHibernate;堅持孩子只有單向映射

如果我創建一個新的秩序,制定有效的Account_ ID,做一個SaveOrUpdate,帳戶 _id設置爲數據庫中的NULL,而實體仍然有ACCOUNT_ID先前設定。

爲什麼?我可以修改SaveOrUpdate方法來實現這個功能嗎?

public class Account 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public IList<Order> Orders { get; set; } 
    //... 
} 

public class Order 
{ 
    public int Id { get; set; } 
    public int Account__id { get; set; } 
    public decimal Price { get; set; } 
    //... 
} 

映射:

public class AccountMap : ClassMap<Account> 
{ 
    public AccountMap() 
     : base() 
    { 
     Id(x => x.Id).GeneratedBy.Identity(); 
     Map(x => x.Name); 
     HasMany(x => x.Orders).KeyColumn("Account__id").Cascade.All(); 
    } 
} 

庫:

public void SaveOrUpdate(T instance) 
    { 
     using (ISession session = FnhManager.OpenSession()) 
     { 
      using (ITransaction transaction = session.BeginTransaction()) 
      { 
       lock (instance) 
       { 
        session.SaveOrUpdate(instance); 
        transaction.Commit(); 
       } 
      } 
     } 
    } 

回答

0

看起來你並沒有映射Account__id訂單映射類。嘗試將

Map(x => x.Account_id) 

添加到您的OrderMap類中。

+0

Ehm ...你是對的,謝謝! – bretddog 2012-07-31 11:26:36