Verantwoordelijkheden van de ontwikkelaar bij het negeren van standaardgedrag
LINQ naar SQL dwingt niet de volgende vereisten af, maar het gedrag is niet gedefinieerd als niet aan deze vereisten wordt voldaan.
De onderdrukkingsmethode mag niet worden aangeroepen SubmitChanges of Attach. LINQ naar SQL genereert een uitzondering als deze methoden worden aangeroepen in een onderdrukkingsmethode.
Onderdrukkingsmethoden kunnen niet worden gebruikt om een transactie te starten, door te voeren of te stoppen. De SubmitChanges bewerking wordt uitgevoerd onder een transactie. Een binnenste geneste transactie kan de buitenste transactie verstoren. Methoden voor het overschrijven van belasting kunnen een transactie pas starten nadat ze hebben vastgesteld dat de bewerking niet wordt uitgevoerd in een Transaction.
Overschrijfmethoden worden naar verwachting gevolgd door de toepasselijke optimistische gelijktijdigheidstoewijzing. De onderdrukkingsmethode wordt naar verwachting veroorzaakt ChangeConflictException wanneer er een optimistisch gelijktijdigheidsconflict optreedt. LINQ naar SQL ondervangt deze uitzondering, zodat u de optie SubmitChangesop de SubmitChanges juiste wijze kunt verwerken.
Insert
Update
Bij het voltooien van de bewerking worden naar verwachting de waarden voor door de database gegenereerde kolommen teruggestroomd naar overeenkomende objectleden wanneer de bewerking is voltooid.Als
Order.OrderID
deze bijvoorbeeld is toegewezen aan een identiteitskolom (primaire sleutel voor automatisch genereren), moet deInsertOrder()
onderdrukkingsmethode de door de database gegenereerde id ophalen en hetOrder.OrderID
lid instellen op die id. Op dezelfde manier moeten tijdstempelleden worden bijgewerkt naar de door de database gegenereerde tijdstempelwaarden om ervoor te zorgen dat de bijgewerkte objecten consistent zijn. Het doorgeven van de door de database gegenereerde waarden kan een inconsistentie veroorzaken tussen de database en de objecten die door de DataContextdatabase worden bijgehouden.Het is de verantwoordelijkheid van de gebruiker om de juiste dynamische API aan te roepen. In de methode voor het overschrijven van updates kan bijvoorbeeld alleen de ExecuteDynamicUpdate methode worden aangeroepen. LINQ naar SQL detecteert of controleert niet of de aangeroepen dynamische methode overeenkomt met de toepasselijke bewerking. Als een niet-toe te passen methode wordt aangeroepen (bijvoorbeeld ExecuteDynamicDelete voor een object dat moet worden bijgewerkt), zijn de resultaten niet gedefinieerd.
Ten slotte wordt verwacht dat de onderdrukkingsmethode de vermelde bewerking uitvoert. De semantiek van LINQ naar SQL-bewerkingen, zoals gretig laden, uitstellen van laden en SubmitChanges) vereisen de onderdrukkingen om de vermelde service te bieden. Een belastingoverschrijving die alleen een lege verzameling retourneert zonder de inhoud in de database te controleren, leidt waarschijnlijk tot inconsistente gegevens.