首页 > > > NHibernate报错
NHibernate报错null id in entry (don't flush the Session after an exception occurs)
private readonly ISession _session = SessionBuilder.GetSession();
public int Save<T>(T entity) where T
{
var id = 0;
var session = this._session;
ITransaction tan = session.BeginTransaction();
try
{
entity = session.Merge(entity);
}
catch
{
}
try
{
tan.Begin();
id = (int)session.Save(entity);
session.Flush();
tan.Commit();
}
catch (Exception e)
{
Log.DebugFormat("Save.Exception=>" + e.Message+ "&entity="+ JsonConvert.SerializeObject(entity));
tan.Rollback();
throw;
}
return id;
}偶尔会出现报错null id in entry (don't flush the Session after an exception occurs),
下面的
2019-01-22 17:02:16,088 DEBUG Ylsdai.Service.BaseService -<log4net.Error>Exception during StringFormat: 输入字符串的格式不正确。 <format>Save.Exception=>null id in Ylsdai.Domain.Entity.AgentShopSale entry (don't flush the Session after an exception occurs)&entity={"SaleId":299,"ShopId":1,"ShipId":27,"CruiseDay":0,"CruiseNight":0,"ItemId":"","AddDate":"2019-01-22T17:02:15.9195763+08:00","DepartureCity":"厦门","DisembarkCity":"厦门","IsDelete":false,"UpdateSaleType":2,"CruiseStartDate":"2000-01-01T00:00:00","CruiseEndDate":"2000-01-01T00:00:00"}</format><args>{}</args></log4net.Error>
2019-01-22 17:02:19,009 DEBUG Ylsdai.Service.BaseService -<log4net.Error>Exception during StringFormat: 输入字符串的格式不正确。 <format>Save.Exception=>null id in Ylsdai.Domain.Entity.AgentShopSale entry (don't flush the Session after an exception occurs)&entity={"SaleId":300,"ShopId":1,"ShipId":27,"CruiseDay":0,"CruiseNight":0,"ItemId":"","AddDate":"2019-01-22T17:02:19.0050508+08:00","DepartureCity":"厦门","DisembarkCity":"厦门","IsDelete":false,"UpdateSaleType":2,"CruiseStartDate":"2000-01-01T00:00:00","CruiseEndDate":"2000-01-01T00:00:00"}</format><args>{}</args></log4net.Error>
2019-01-22 17:03:10,991 DEBUG Ylsdai.Service.BaseService -<log4net.Error>Exception during StringFormat: 输入字符串的格式不正确。 <format>Save.Exception=>null id in Ylsdai.Domain.Entity.AgentShopSale entry (don't flush the Session after an exception occurs)&entity={"SaleId":301,"ShopId":1,"ShipId":27,"CruiseDay":0,"CruiseNight":0,"ItemId":"","AddDate":"2019-01-22T17:03:10.9887294+08:00","DepartureCity":"厦门","DisembarkCity":"厦门","IsDelete":false,"UpdateSaleType":2,"CruiseStartDate":"2000-01-01T00:00:00","CruiseEndDate":"2000-01-01T00:00:00"}</format><args>{}</args></log4net.Error>
2019-01-22 17:03:12,746 DEBUG Ylsdai.Service.BaseService -<log4net.Error>Exception during StringFormat: 输入字符串的格式不正确。 <format>Save.Exception=>null id in Ylsdai.Domain.Entity.AgentShopSale entry (don't flush the Session after an exception occurs)&entity={"SaleId":302,"ShopId":1,"ShipId":27,"CruiseDay":0,"CruiseNight":0,"ItemId":"","AddDate":"2019-01-22T17:03:12.7436391+08:00","DepartureCity":"厦门","DisembarkCity":"厦门","IsDelete":false,"UpdateSaleType":2,"CruiseStartDate":"2000-01-01T00:00:00","CruiseEndDate":"2000-01-01T00:00:00"}</format><args>{}</args></log4net.Error>我把网站bin文件夹的dll文件复制出来,再复制进去提交,主键SaleId变成303,等于是主键挑掉了,并且出现了上述问题,实体映射为
[Serializable]
public class AgentShopSale : BaseEntity
{
/// <summary>
/// SaleId
/// </summary>
public virtual int SaleId { get; set; }
/// <summary>
/// AgentId
/// </summary>
public virtual int ShopId { get; set; }
/// <summary>
/// ShipId
/// </summary>
public virtual int ShipId { get; set; }
/// <summary>
/// CruiseDay
/// </summary>
public virtual int CruiseDay { get; set; }
/// <summary>
/// CruiseNight
/// </summary>
public virtual int CruiseNight { get; set; }
/// <summary>
/// ItemId
/// </summary>
public virtual string ItemId { get; set; }
/// <summary>
/// AddDate
/// </summary>
public virtual DateTime AddDate { get; set; }
/// <summary>
/// DepartureCity
/// </summary>
public virtual string DepartureCity { get; set; }
/// <summary>
/// DisembarkCity
/// </summary>
public virtual string DisembarkCity { get; set; }
/// <summary>
/// IsDelete
/// </summary>
public virtual bool IsDelete { get; set; }
/// <summary>
/// UpdateSaleType
/// </summary>
public virtual int UpdateSaleType { get; set; }
/// <summary>
/// CruiseStartDate
/// </summary>
public virtual DateTime CruiseStartDate { get; set; }
/// <summary>
/// CruiseEndDate
/// </summary>
public virtual DateTime CruiseEndDate { get; set; }
}
public class AgentShopSaleMap : ClassMapping<AgentShopSale>
{
public AgentShopSaleMap()
{
SelectBeforeUpdate(true);
DynamicUpdate(true);
//Mutable(false);
//Cache(p => p.Usage(CacheUsage.ReadWrite));
Id(p => p.SaleId, map => map.Generator(Generators.Native));
Property(p => p.ShopId);
Property(p => p.ShipId);
Property(p => p.CruiseDay);
Property(p => p.CruiseNight);
Property(p => p.ItemId);
Property(p => p.DepartureCity);
Property(p => p.DisembarkCity);
Property(p => p.AddDate);
Property(p => p.IsDelete);
Property(p => p.UpdateSaleType);
Property(p => p.CruiseStartDate);
Property(p => p.CruiseEndDate);
}
}请问有大神解决了吗?不是长度的问题,长度问题应该是报“将截取字符串”,日期类型都有值的,除了主键全部可以为空,
NHibernate 版本为5.1.3
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4549/viewspace-3145547/ ,如需转载,请注明出处,否则将追究法律责任。