Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az alábbi információk a LINQ-ban előforduló problémákat teszik elérhetővé az SQL-alkalmazások számára, és javaslatokat nyújtanak a problémák hatásának elkerülésére vagy más módon történő csökkentésére.
A további problémákat a gyakori kérdések között is meg kell oldani.
Nem támogatott standard lekérdezési operátorok
A LINQ–SQL nem támogatja az összes szabványos lekérdezési operátori metódust (például ElementAt). Ennek eredményeképpen a lefordított projektek futásidejű hibákat okozhatnak. További információ: Standard lekérdezési operátor fordítása.
Memóriaproblémák
Ha egy lekérdezés memórián belüli gyűjteményt és LINQ-t tartalmaz az SQL-hez Table<TEntity>, a lekérdezés végrehajtható a memóriában attól függően, hogy a két gyűjtemény milyen sorrendben van megadva. Ha a lekérdezést a memóriában kell végrehajtani, akkor az adatbázistáblából származó adatokat le kell kérni.
Ez a megközelítés nem hatékony, és jelentős memória- és processzorhasználatot eredményezhet. Próbálja elkerülni az ilyen többtartományos lekérdezéseket.
Fájlnevek és SQLMetal
Bemeneti fájlnév megadásához adja hozzá a nevet a parancssorhoz bemeneti fájlként. A kapcsolati sztringben szereplő fájlnév (a /conn opció használata) nem támogatott. További információ: SqlMetal.exe (Kódgenerálási eszköz).
Osztálytár-projektek
Az Objektumrelációs tervező létrehoz egy kapcsolati sztringet a app.config projekt fájljában. Az osztálytár-projektekben a app.config fájl nem használatos. A LINQ–SQL a tervezési időfájlokban megadott kapcsolati sztringet használja. Az érték app.config módosítása nem módosítja azt az adatbázist, amelyhez az alkalmazás csatlakozik.
Kaszkádolt törlés
A LINQ–SQL nem támogatja vagy ismeri fel a kaszkádolt törlési műveleteket. Ha olyan táblát szeretne törölni, amely korlátozásokkal rendelkezik, tegye a következők valamelyikét:
Állítsa be a szabályt
ON DELETE CASCADEaz adatbázis idegenkulcs-korlátozásában.Saját kód használatával először törölje azokat a gyermekobjektumokat, amelyek megakadályozzák a szülőobjektum törlését.
Ellenkező esetben a rendszer kivételt SqlException vet ki.
További információ : Sorok törlése az adatbázisból.
A kifejezés nem kérdezhető le
Ha a "Kifejezés [kifejezés] nem lekérdezhető; hiányzik egy assembly hivatkozás?" hibaüzenetet kapja, győződjön meg a következőkről:
Az alkalmazás a .NET Compact Framework 3.5-öt célozza.
Rendelkezik hivatkozással
System.Core.dllésSystem.Data.Linq.dll.Van egy
Imports(Visual Basic) vagyusing(C#) irányelve a System.Linq és a System.Data.Linq.
DuplicateKeyException (duplikált kulcs kivétel)
A LINQ to SQL projekt hibakeresése során előfordulhat, hogy egy entitás kapcsolatai között navigál. Ezzel ezeket az elemeket a gyorsítótárba helyezi, és a LINQ az SQL-nek tudomást szerez a jelenlétükről. Ha ezután megpróbál végrehajtani Attach egy InsertOnSubmit vagy egy hasonló metódust, amely több olyan sort hoz létre, amely ugyanazzal a kulccsal rendelkezik, az a DuplicateKeyException lesz.
Sztringösszefűzési kivételek
A [n]text-hez illesztett operandusok és más, [n][var]char-hez kapcsolódó elemek összefűzése nem támogatott. Kivétel dobódik, amikor karakterláncokat fűznek össze, amelyek két különböző típus halmazra vannak leképezve. További információ: System.String Methods.
Kivételek kihagyása és kivétele az SQL Server 2000-ben
SQL Server 2000-adatbázis használatakor, ha IsPrimaryKey vagy Take használata mellett dönt, identitástagokat (Skip) kell használnia. A lekérdezésnek egyetlen táblára (azaz nem illesztésre), vagy Distinct, Except, Intersect, illetve Union műveletre kell irányulnia, és nem tartalmazhat Concat műveletet. További információ: "SQL Server 2000 támogatás" szakasz a Standard lekérdezéskezelő fordításában.
Ez a követelmény nem vonatkozik az SQL Server 2005-re.
GroupBy úgyműködési hiba (InvalidOperationException)
Ez a kivétel akkor jelenik meg, ha egy oszlop értéke null értékű egy GroupByboolean kifejezéssel csoportosított lekérdezésben, például group x by (Phone==@phone). Mivel a kifejezés egy boolean, a kulcs következtetett boolean-nek, nem pedig nullableboolean. Amikor a lefordított összehasonlítás null értéket ad meg, a rendszer megpróbál hozzárendelni egy nullableboolean-t egy boolean-hez, és ilyenkor kivétel keletkezik.
A helyzet elkerülése érdekében (feltételezve, hogy a null értékeket hamisként szeretné kezelni), használja az alábbihoz hasonló megközelítést:
GroupBy="(Phone != null) && (Phone=@Phone)"
OnCreated() Részleges metódus
A generált metódust OnCreated() minden alkalommal meghívja a rendszer, amikor meghívja az objektumkonstruktort, beleértve azt a forgatókönyvet is, amelyben a LINQ az SQL-hez meghívja a konstruktort, hogy készítsen másolatot az eredeti értékekről. Vegye figyelembe ezt a viselkedést, ha a metódust OnCreated() a saját részleges osztályában implementálja.