C# 在执行transaction.Commit()时NHibernate.AssertionFailure意味着什么?
C# 在执行transaction.Commit()时NHibernate.AssertionFailure意味着什么?,c#,nhibernate,C#,Nhibernate,我是编写Windows窗体应用程序的新手。在过去的两天里,我遇到了一个错误。我在基本DAO层中有一个方法Add() public virtual void Add(T entity) { try { DomainObject domObj = entity as DomainObject; if (domObj != null) { domObj.CreatedDate = domObj.LastModifi
我是编写Windows窗体应用程序的新手。在过去的两天里,我遇到了一个错误。我在基本DAO层中有一个方法
Add()
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()
移动到基本DAO层中的一个单独的方法中
public virtual void Commit(T entity)
{
using (ITransaction transaction = GetTransaction)
{
transaction.Commit();
}
}
我在其余的层中做了相应的更改。现在,当我运行应用程序并在表单中输入数据时,我得到了这个异常(NHibernate.AssertionFailure)。请帮忙
这是MarketScenario实体类代码:
namespace RKG.SCM.ModelObjects
{
公共类市场情景模型
{
public MarketScenarioModel(){}
}
这是MarketScenario NHibernate映射:
命名空间RKG.SCM.NHibernate.Mappings{
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");
}
}
公共类MarketScenarioMap:ClassMap{
公共市场场景图(){
表(“市场情况”);
懒散的负荷();
Id(x=>x.Id).GeneratedBy.Identity()列(“Id”);
参考(x=>x.Scenario).Column(“Scenario_id”);
Map(x=>x.MarketIdList).列(“市场id列表”);
}
}
}如果您可以显示您的MarketScenario实体类代码及其映射(xhbm或fluent或您使用的任何东西),这将非常有用 看起来它的主键不是identity(自动生成),您尝试用空Id保存对象。如果它是identity列,则可以
当然,这取决于您希望使用的标识生成策略。我认为您应该告诉我们有关此实体及其标识列的更多信息。AssertionFailure是RKG.SCM.DomainObjects.MarketScenario条目中未处理的空id(发生异常后不要刷新会话)MarketScenario实体类代码及其映射已添加到已编辑的问题中。这似乎有点奇怪。可能主键不是问题。您能稍微调查一下您的异常吗?在.NET异常中通常有有用的属性和堆栈跟踪。请尝试发布异常的图片或文本转储,以便它可能被删除我想调查一下你的问题。
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");
}
}