Czy można uzyskać LINQ do SQL, aby usunąć rekord za pomocą PK, bez wcześniejszego ładowania rekordu? Podobne do funkcji obiektu proxy NHibernate?Usunięcie rekordu LINQ do SQL bez załadowania go najpierw
6
A
Odpowiedz
15
Powinieneś być w stanie zrobić to w ten sposób:
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
Dodawanie do Józefa odpowiedź:
Możesz mieć kłopoty usunięcia w ten sposób, jeśli jednostka ma żadnych pól, dla których UpdateCheck jest ustawiona na Zawsze, chyba że ustawisz odpowiednie pola.
Ponadto, jeśli usuwasz wiele powiązanych obiektów, w których występują ograniczenia FK, możesz mieć problemy, jeśli elementy nie zostaną usunięte we właściwej kolejności (co spowoduje naruszenie ograniczenia). Aby tego uniknąć, należy odpowiednio ustawić wszystkie pola związane z takimi FK.