I am a newbie to programming Windows forms application. I am stuck with an error for the past 2 days. I had a method
在基础DAO层中添加()`
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 { public 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.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");
}
}
}
答案 0 :(得分:0)
如果您可以显示您的MarketScenario实体类代码及其映射(xhbm或流利或您使用的任何内容),将会很有帮助。
看起来它的主键不是标识(自动生成),并且您尝试使用null Id保存对象。如果它是一个标识列,那就没问题了。
当然,这取决于您想要使用的身份生成策略。我想你应该多告诉我们这个实体及其标识栏。