Der Spaltenname ist nicht gültig. [Knotenname (falls vorhanden) = t0, Spaltenname = Version]

8

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?

    
Haris Hasan 29.01.2012, 18:31
quelle

4 Antworten

5

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

    
Haris Hasan 29.01.2012, 19:08
quelle
2

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)

    
Garry English 26.04.2012 23:34
quelle
1

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.

    
libik 19.08.2014 09:56
quelle
0

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!

    
Vladimir Vukanac 25.12.2014 01:58
quelle