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

时间:2009-08-21 14:11:35

标签: .net performance linq-to-sql

是否可以让LINQ to SQL使用PK删除记录,而不首先加载记录?类似于NHibernate的代理对象功能?

2 个答案:

答案 0 :(得分:16)

你应该能够这样做:

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
}

答案 1 :(得分:3)

加入约瑟夫的回答:

如果您的实体具有UpdateCheck设置为Always的任何字段,则可能无法以此方式删除,除非您根据需要设置此类字段。

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