2015-04-03 35 views
0

I am a newbie to programming Windows forms application. I am stuck with an error for the past 2 days. I had a method添加()`在Base DAO層NHibernate.AssertionFailure做transaction.Commit()是什麼意思?

public virtual void Add(T entity) 
{ 
    try 
    { 
     DomainObject domObj = entity as DomainObject; 
     if (domObj != null) 
     { 
      domObj.CreatedDate = domObj.LastModifiedDate = DateTime.Now.ToUniversalTime(); 
     } 

     using (ITransaction transaction = GetTransaction) 
     { 
      _session.Save(entity); 
      //******* _session.SaveOrUpdate(entity); 
      // _session.Refresh(entity); 
      //transaction.Commit(); 

     } 
    } 

我試圖transaction.Commit()移動到在Base DAO層一個單獨的方法。

public virtual void Commit(T entity) 
{ 
    using (ITransaction transaction = GetTransaction) 
    { 
     transaction.Commit(); 
    } 
} 

我已對其餘層進行了相應的更改。現在,當我運行應用程序並將數據輸入到表單時,我得到此異常(NHibernate.AssertionFailure)。請幫忙。

這是MarketScenario實體類代碼:

namespace RKG.SCM.ModelObjects 

{ 公共類MarketScenarioModel { 公共MarketScenarioModel(){}

public MarketScenarioModel(string selectedMarketIds) 
    { 
     this.MarketIdList = selectedMarketIds; 
    } 

    public virtual int Id { get; set; } 
    public virtual ScenarioModel ScenarioModel { get; set; } 
    public virtual string MarketIdList { get; set; } 
} 

} 而這正是MarketScenario NHibernate的映射:

命名空間RKG.SCM.NHibernate。映射{

public class MarketScenarioMap : ClassMap<MarketScenario> { 

    public MarketScenarioMap() { 
     Table("market_scenario"); 
     LazyLoad(); 
     Id(x => x.Id).GeneratedBy.Identity().Column("id"); 
     References(x => x.Scenario).Column("scenario_id"); 
     Map(x => x.MarketIdList).Column("market_id_list"); 
    } 
} 

}

+0

什麼例外? – JonasCz 2015-04-03 11:42:02

+0

AssertionFailure在RKG.SCM.DomainObjects.MarketScenario條目中未處理的空ID(在發生異常後不刷新會話) – Arya 2015-04-03 11:44:01

回答

0

這將是有益的,如果你能告訴你的MarketScenario實體類代碼和它的映射(xhbm或流利或任何你使用)。

看起來它的主鍵不是標識(自動生成),並且您嘗試使用空Id來保存對象。如果它是一個身份專欄,那就好了。

當然,這取決於您想使用的身份生成策略。我認爲你應該多介紹一下這個實體和它的標識欄。

+0

MarketScenario實體類代碼及其映射已添加到編輯的問題中。 – Arya 2015-04-06 07:34:49

+0

這似乎有點奇怪。也許主鍵不是問題。你可以調查一下你的例外嗎? .NET例外中經常有有用的屬性和堆棧跟蹤。嘗試發佈您的例外的圖片或文本轉儲,以便可以調查您的問題。 – mkarczewski 2015-04-07 08:02:26