如何防止在使用Linq和SQL时向表中插入新记录



当创建映射到我的一个SQL Server表的新对象时,当我调用SubmitChanges时,LINQ会在表中插入一条新记录。我想阻止这种情况,但仍然需要我的新对象。

我知道自定义方法,但是否可以禁用这种行为,使其只更新现有记录,从不插入新记录,无论我是否调用了MyTableClass myObject = new MyTableClass()

谢谢。

如果你想让你的数据上下文在插入时barf,你可以做:

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

如果您不希望模型中的对象,为什么要将其添加到数据上下文中?]

您总是可以创建一个什么都不做的存储过程,并将其分配给插入角色-这是一个真正的破解,但它会完成任务!

我建议,也许这个问题的出现表明你引用这个对象的方法有问题——到底是什么需要使用这个新对象?

你能在服务器端不阻止它吗?以没有插入访问权限的角色连接。我怀疑,这迟早会成为防止插入的最防弹的方法。

相关内容

  • 没有找到相关文章

最新更新