c# - LINQ TO SQL错误: An attempt has been made to Attach or Add an entity that is not new

标签 c# linq-to-sql datacontext

“已尝试附加或添加不是新的实体,可能是从另一个 DataContext 加载的。不支持此操作。”

我有很多处理 Attach() 方法的解决方案,但我只是想添加一条新记录。不知道发生了什么事。

这是我的代码,它在星号行上失败了。:

try
            {
                LINQDataContext datacontext = new LINQDataContext();


                TrackableItem ti = datacontext.TrackableItems.FirstOrDefault(_t => _t.pkId == obj.fkTrackableItemId);
                arcTrackableItem ati = new arcTrackableItem();
                ati.barcode = ti.barcode;
                ati.dashNumber = ti.dashNumber;
                ati.dateDown = ti.dateDown;
                ati.dateUp = ti.dateUp;
                ati.fkItemStatusId = ti.fkItemStatusId;
                ati.fkItemTypeId = ti.fkItemTypeId;
                ati.partNumber = ti.partNumber;
                ati.serialNumber = ti.serialNumber;
                ati.archiveDate = DateTime.Now;

                datacontext.arcTrackableItems.InsertOnSubmit(ati);
                datacontext.SubmitChanges();


                arcPWR aItem = new arcPWR();
                aItem.comments = obj.comments;
                aItem.fkTrackableItemId = ati.pkId;
                aItem.fkPWRStatusId = obj.fkPWRStatusId;
                aItem.PwrStatus = obj.PwrStatus;


                **datacontext.arcPWRs.InsertOnSubmit(aItem);**
                datacontext.SubmitChanges();

最佳答案

看起来 obj 是使用不同的 dataContext 构建的,并且需要使用相同的 dataContext 创建而不是实例化一个新的 dataContext。

一种快速解决方案可能是传入 dataContext,而不是在此方法中实例化新的 dataContext。

关于c# - LINQ TO SQL错误: An attempt has been made to Attach or Add an entity that is not new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1840966/

相关文章:

c# - n 个列表的笛卡尔积

linq-to-sql - SQLMetal 多个外键指向一张表问题

c# - 如何从 LINQ DataContext.SubmitChanges() 获取 TSQL 查询

c# - 我可以在 Web 服务中使用编译查询吗?

c# - 在运行时生成类

wpf - 在用户控件中设置 DataGrid 的 ItemsSource

wpf - "DataContextChanging"的事件?

c# - 提供类作为保存数据的服务的正确方法是什么?

C# 如何将 ISupportExternalScope 与客户 ILogger/ILoggerProvider 和中间件一起使用

c# - 从数据库填充列表 - System.InvalidCastException