LINQ - 插入新记录 - 有关添加非新实体的错误

时间:2011-12-08 22:52:23

标签: c# linq linq-to-sql insert

尝试附加或添加一个非新的实体,可能是从另一个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的记录。

感谢。

1 个答案:

答案 0 :(得分:1)

试试 - 这个。我认为_dataContext没有返回相同的datacontext。

 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();
    }