Удалить запись LINQ to SQL без предварительной загрузки - PullRequest
6 голосов
/ 21 августа 2009

Можно ли заставить LINQ to SQL удалить запись, используя PK, без предварительной загрузки записи? Похоже на функциональность прокси-объекта NHibernate?

Ответы [ 2 ]

16 голосов
/ 21 августа 2009

Вы должны быть в состоянии сделать это следующим образом:

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
}
3 голосов
/ 22 августа 2012

Добавление к ответу Иосифа:

У вас могут возникнуть проблемы с удалением таким способом, если у вашей сущности есть какие-либо поля, для которых UpdateCheck имеет значение Always, если вы не установите такие поля соответствующим образом.

Кроме того, если вы удаляете несколько связанных объектов, в которых задействованы ограничения FK, у вас могут возникнуть проблемы, если объекты не будут удалены в правильной последовательности (что приведет к нарушению ограничения). Чтобы избежать этого, при необходимости установите все поля, включенные в такие FK.

...