尝试附加或添加一个非新的实体,可能是从另一个DataContext加载的。
我已经跟踪了很多关于这个错误的线程,看起来我的例子应该可行,但事实并非如此。
public void Update(Bid bid)
{
if (bid.BidID == 0) // new Bid
{
Bid newBid = new Bid();
AutoMapper.Mapper.DynamicMap<Bid, Bid>(bid, newBid);
_dataContext.Bids.InsertOnSubmit(newBid);
}
_dataContext.SubmitChanges();
}
看起来newBid对象似乎是在我尝试SubmitChanges的同一数据上下文中创建的,因此应该正确跟踪。我遇到的一件事是newBid对象将其BidID属性设置为0. BidID是数据库中的标识列。那可能有问题吗?表中目前没有BidID为0的记录。
感谢。
答案 0 :(得分:1)
public void Update(Bid bid)
{
var ctx = _dataContext;
if (bid.BidID == 0) // new Bid
{
Bid newBid = new Bid();
AutoMapper.Mapper.DynamicMap<Bid, Bid>(bid, newBid);
ctx.Bids.InsertOnSubmit(newBid);
}
ctx.SubmitChanges();
}