我正面临这个例外An attempt has been made to Attach or Add an entity that is not new, perhaps having been loaded from another DataContext. This is not supported
。当我尝试将新实体插入我的Employees表(主表)时。
主Employees表和详细Orders表之间存在关系,我确信这两个表(特别是Employee.Orders EntitySet)之间的关系是问题的原因,因为我删除了关系,它返回插入到Employees表中没有问题。
当我搜索问题时,我试图实现this blog post,但我的案例与博客文章中的案例不同:
我该如何解决这个问题?
这是插入代码:
Employee emp = new Employee();
emp.Name = empName; // empName is a local variable
// What should I default emp.Orders to?
dc.Employees.InsertOnSubmit(emp);
dc.SubmitChanges();
P.S:我的DataContext是在我的存储库中的类级别定义的,当我调用dc.SubmitChanges();
时会抛出异常。并且我没有附加任何对象为什么会这么说?
答案 0 :(得分:1)
这篇文章解释了使用Attach和Detach方法需要做什么: http://www.codeproject.com/KB/linq/linq-to-sql-detach.aspx
答案 1 :(得分:0)
我猜它除了雇员对象之外还试图保存其他东西,或者你没有向我们展示你的存储库中的完整代码。当您实例化DataContext对象(dc)时,尝试设置DeferredLoadingEnabled = false,并且ObjectTrackingEnabled = false并查看它是否有效。如果是这样,请尝试在SQL Server Profiler中查看SQL代码,看看它是否正在修改可能来自不同上下文的其他对象,如消息所示。
var dc = new MyDataContext()
{
DeferredLoadingEnabled = false,
ObjectTrackingEnabled = false
};
答案 2 :(得分:0)
我的赌注是主键。
auto increment
?