Ich habe Probleme beim Versuch, SQLCE
database in meiner Windows Phone Mango-Anwendung abzufragen.
Ich bekomme eine Ausnahme, wenn ich
ausführe foreach (var item in myDataContext.MyTable.Select(item => item))
The column name is not valid. [ Node name (if any) = t0,Column name = version ]
Seltsamerweise funktioniert es, wenn ich eine Abfrage auf der Basis einer einzelnen Spalte ausführe,
foreach (var item in myDataContext.MyTable.Select(item => item.SomeColumn))
Irgendeine Idee, was könnte hier falsch sein?
Ich installierte LINQ to SQL Debug Visualizer herauszufinden, welche Abfrage genau hinter der Szene generiert wird und es war
{SELECT [t0].[version], [t0].[ID], [t0].[Volume], ... similarly rest of the columns
FROM [MyTable] AS [t0]
Das war seltsam, weil ich keine Versionsspalte in meiner Tabelle hatte (je). Ich schaute in mein Modell und ich fand diese Spalte definiert
%Vor% Ich habe die Spalte entfernt, indem ich diese beiden Zeilen kommentiert und die App erneut ausgeführt habe. Neu generiertes SQL hatte keine Spalte version
und meine Abfrage funktionierte einwandfrei.
Ich verwende SQLCEMangoCodeGenerator
zum Generieren von LINQ to SQL-Klassen. Ich schätze Fehler ist in diesem Werkzeug, wegen dem es eine zusätzliche Spalte erzeugte, die ich in meiner Tabelle nicht hatte
Ich hatte das gleiche Problem mit dem Tool "SQLCEMangoCodeGenerator".
Ich habe begonnen, das Tool "SQL Server Compact Toolbox" zu verwenden, und ich hatte keine Probleme: Ссылка
(Suchen Sie nach "NEW: DataContext" auf der obigen Website für einen Screenshot. Sobald Sie die Erweiterung installiert haben, klicken Sie auf die "SQL Server Compact Toolbox" im Menü Extras)
Ich habe dieses Problem gelöst, indem ich die gesamte Datenbank gelöscht und neu erstellt habe.
Offensichtlich passiert dies, wenn Sie eine ältere Version der Tabelle in der Datenbank haben, als Sie verwenden möchten, so dass diese Spalte in dieser Tabelle nicht existiert.
Führen Sie in SqlCE.sdf mit SQL Server Managment Studio Folgendes aus:
DELETE FROM [User] WHERE [User].[UserName] = "zz"
hat ein ähnliches Problem mit dem ungültigen Spaltennamen, aber die Zitate wurden in Apostrophe geändert:
DELETE FROM [User] WHERE [User].[UserName] = 'zz'
und es hat funktioniert!
Tags und Links c# linq-to-sql sql-server-ce windows-phone-7.1