代码之家  ›  专栏  ›  技术社区  ›  Neil Barnwell

删除LINQ to SQL记录而不先加载它

  •  6
  • Neil Barnwell  · 技术社区  · 15 年前

    在不首先加载记录的情况下,是否可以让Linq to SQL使用pk删除记录?类似于nhibernate的代理对象功能?

    2 回复  |  直到 9 年前
        1
  •  16
  •   Joseph    15 年前

    您应该能够这样做:

    var person = new Person();
    person.ID = someID;
    
    using (var context = new DataContext(connString))
    {
        context.Persons.Attach(person, false); //attach is as unmodified
        context.Persons.DeleteOnSubmit(person); //remove it
        context.SubmitChanges(); //submit changes to db
    }
    
        2
  •  3
  •   Pennidren    12 年前

    加上约瑟夫的回答:

    如果您的实体有任何字段的updateCheck设置为Always,则以这种方式删除时可能会遇到问题,除非您适当地设置了这些字段。

    此外,如果删除涉及FK约束的多个相关实体,则如果未按正确的顺序删除这些实体(导致违反约束),则可能会遇到问题。要避免这种情况,请根据需要设置此类FK中涉及的所有字段。