c# - 使用 Linq 和 SQL 时如何防止将新记录插入表中?

标签 c# sql-server linq

创建映射到 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/

相关文章:

c# - 基于KeyValuePairs的过滤列表

sql-server - SSIS Access 数据库 - 在插入新记录之前需要清空目标 Access 数据库表上的表

c# - 根据属性将两个列表合并为一个

c# - 语法错误,Razor 中预期为 '>'

c# - asp.net mvc 文件内容类型

c# - GC.GetTotalMemory(false) 和 Process.WorkingSet

c# - 将存储过程与 LINQ 结合使用

MySQL 数据整数转 SQL Server 日期时间类型

sql - 在 SQL 查询中使用 REPLACE 来获取换行符/回车符

c# - 如何处理作为参数传递给方法的 Lambda 表达式 - C# .NET 3.5