创建映射到 SQL Server 表之一的新对象时,当我调用 SubmitChanges 时,LINQ 会在表中插入一条新记录。我想防止这种情况发生,但仍然需要我的新对象。
我了解自定义方法,但是无论如何都可以禁用此行为,以便它只更新现有记录并且永远不会插入新记录,无论我是否调用了MyTableClass myObject = new MyTableClass()
或不。
谢谢。
最佳答案
如果您希望数据上下文在插入时崩溃,您可以这样做:
partial class DataClasses1DataContext
{
public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
{
if(GetChangeSet().Inserts.OfType<MyObject>().Any())
{
throw new InvalidOperationException("No inserts!");
}
base.SubmitChanges(failureMode);
}
}
有什么好处吗?
[原为: 您可以简单地将其添加为“干净”吗 - 即 Attach(obj, false);
如果您不希望模型中存在该对象,为什么要将其添加到数据上下文中?]
关于c# - 使用 Linq 和 SQL 时如何防止将新记录插入表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/200785/