Megosztás a következőn keresztül:


A fejlesztő feladatai az alapértelmezett viselkedés felülbírálásában

Az SQL-hez való LINQ nem kényszeríti ki a következő követelményeket, de a viselkedés nem határozható meg, ha ezek a követelmények nem teljesülnek.

  • A felülírási módszer nem hívható meg vagy Attachnem hívható SubmitChanges meg. A LINQ to SQL kivételt eredményez, ha ezek a metódusok felülbírálási metódusban vannak meghívva.

  • A felülbírálási metódusok nem használhatók tranzakciók indítására, véglegesítésére vagy leállítására. A SubmitChanges művelet egy tranzakció alatt történik. A belső beágyazott tranzakciók zavarhatják a külső tranzakciót. A terhelés-felülbírálási metódusok csak akkor indíthatnak el tranzakciókat, ha megállapítják, hogy a művelet nem Transactionegy .

  • A felülbírálási módszereknek a megfelelő optimista egyidejűségi megfeleltetést kell követnie. A felülbírálási módszer várhatóan optimista egyidejűségi ütközés esetén jelenik ChangeConflictException meg. A LINQ-ről SQL-hez való lekérése ezt a kivételt okozza, így megfelelően feldolgozhatja a SubmitChanges megadott SubmitChangesbeállítást.

  • A létrehozási (Insert) és Update felülbírálási metódusok várhatóan visszafolynak az adatbázis által létrehozott oszlopok értékeire a megfelelő objektumtagokra a művelet sikeres befejezésekor.

    Ha például Order.OrderID egy identitásoszlopra van leképezve (automatikus elsődleges kulcs), akkor a InsertOrder() felülbírálási módszernek le kell kérnie az adatbázis által létrehozott azonosítót, és a tagot erre az Order.OrderID azonosítóra kell állítania. Hasonlóképpen, az időbélyeg-tagokat frissíteni kell az adatbázis által létrehozott időbélyeg-értékekre, hogy a frissített objektumok konzisztensek legyenek. Az adatbázis által létrehozott értékek propagálásának sikertelensége inkonzisztenciát okozhat az adatbázis és a nyomon követett DataContextobjektumok között.

  • A felhasználó felelőssége a megfelelő dinamikus API meghívása. A frissítés felülbírálási módszerében például csak a ExecuteDynamicUpdate meghívható. A LINQ–SQL nem észleli vagy ellenőrzi, hogy a meghívott dinamikus metódus megfelel-e az alkalmazandó műveletnek. Ha egy nem alkalmazható metódust hív meg (például ExecuteDynamicDelete egy objektum frissítéséhez), az eredmények nem lesznek meghatározva.

  • Végül a felülírási módszer várhatóan végrehajtja a megadott műveletet. A LINQ és az SQL-műveletek szemantikája, például a lelkes betöltés, a késleltetett betöltés és SubmitChangesa ) megkövetelik a felülbírálásokat a megadott szolgáltatás biztosításához. Például egy terhelés felülbírálása, amely csak egy üres gyűjteményt ad vissza az adatbázis tartalmának ellenőrzése nélkül, valószínűleg inkonzisztens adatokhoz fog vezetni.

Lásd még