我正在使用FluentNHibernate,当我发帖时收到此错误。
已经有一个具有相同标识符值的不同对象 与会话相关联
那是我的控制器:
private readonly ITicketAppService _ticketAppService;
public TicketController()
{
ITicketAppService ticketAppService = new TicketAppService(new TicketService(new TicketRepository(), new RomaneioCodRepository(), new ParamGerarMZRepository()));
}
public ResponseApi Post(Ticket ticket)
{
var result = new ResponseApi();
try{
//my code goes here
//my code goes here
//my code goes here
_ticketAppService.Add(ticket);
_ticketAppService.Commit();
result.DocsSaved.AddRange(ticket.ROMANEIOs);
}
catch (Exception ex)
{
_ticketAppService.RollBack();
result.Errors.Add(new Erro(ex));
}
return result;
}
那就是我的Add on RepositoryBase:
public virtual void Add(TEntity obj)
{
try
{
BeginTrasaction();
Db.Merge(obj);
}
catch (Exception ex)
{
Log.ErrorFormat("Erro ao tentar adicionar alterações. Detalhes: {0}", ex);
throw new Exception("Erro ao tentar adicionar registro.", ex);
}
}
我所看到的所有问题都说使用Merge()会导致NHibernate尝试从用户那里保存一个ID,就像已经在会话中一样,但是我使用Merge()得到了同样的错误。 而且我也在使用每个请求的会话。 我试过在documentation上做同样的事情。 有人知道如何解决这个问题?