我首先使用数据库,并且拥有一个包含子实体集合的父实体。当我同时添加两者时,我在数据库中得到一个FK约束,当我记录EF的命令时,我看到它发送sql命令首先在UOW中插入子记录,当然它爆炸了。
代码首先使用dbSet.Add
添加故障单,然后将StockTicket添加到Ticket.StockTickets
。然后调用SaveChanges()
我还尝试将Ticket和StockTicket添加到各自的dbSet,然后手动将StockTicket添加到Ticket.StockTickets
,将Ticket添加到StockTicket.Ticket
,但这不起作用
没有任何作用,我以前也没有遇到过这种情况;我和EF一起工作了很多。
public partial class Ticket
{
public Ticket()
{
this.StockTickets = new HashSet<StockTicket>();
}
public long TicketID { get; set; }
...
public virtual ICollection<StockTicket> StockTickets { get; set; }
}
public partial class StockTicket
{
public long StockTicketID { get; set; }
...
public virtual Ticket Ticket { get; set; }
}
// base repository methods
protected void Insert(TEntity entity)
{
if (entity == null)
{
throw new ArgumentNullException("entity", "The entity argument is null.");
}
var entry = _context.Entry(entity);
entry.Property("isActive").CurrentValue = true;
_dbSet.Add(entity);
}
public void Save()
{
_context.SaveChanges();
}
在我的服务中调用代码:
ticket.ticketID = GetNextSequence();
_repository.Insert(ticket);
ticket.StockTickets.Add(stockTicket);
_repository.Save();