我正在使用 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;
}
这就是我在 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() 时遇到了同样的错误。而且我也在使用每个请求的会话。我已经尝试在这个文档上做同样的事情。有人知道我该如何解决?