Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The column name is not valid. [ Node name (if any) = t0,Column name = version ]

I am facing issue while trying to query SQLCE database in my Windows Phone Mango application.

I get exception when I execute

foreach (var item in myDataContext.MyTable.Select(item => item))

The column name is not valid. [ Node name (if any) = t0,Column name = version ]

Strangely, when I execute query based on any individual column, it works fine

foreach (var item in myDataContext.MyTable.Select(item => item.SomeColumn))

Any idea what could be wrong here?

like image 796
Haris Hasan Avatar asked Jan 29 '12 18:01

Haris Hasan


3 Answers

I installed LINQ to SQL Debug Visualizer to find out what query exactly is being generated behind the scene and it was

{SELECT [t0].[version], [t0].[ID], [t0].[Volume], ... similarly rest of the columns FROM [MyTable] AS [t0]

This was strange because I didn't had version column in my table (ever). I looked into my model and I found this column defined

[Column(IsVersion = true)]
private Binary version;

I removed column by commenting out these two lines and re-ran the app. Newly generated SQL didn't had any version column and my query worked fine.

I am using SQLCEMangoCodeGenerator for generating LINQ to SQL classes. I guess error is in this tool because of which it generated an extra column which I didn't have in my table

like image 190
Haris Hasan Avatar answered Nov 02 '22 15:11

Haris Hasan


I was having the same issue with the "SQLCEMangoCodeGenerator" tool.

I started to use the "SQL Server Compact Toolbox" tool and I haven't had any issues: http://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1/

(search for "NEW: DataContext" on the above website for a screen shot. Once you've installed the Extension, click the "SQL Server Compact Toolbox" in the Tools menu)

like image 2
Garry English Avatar answered Nov 02 '22 15:11

Garry English


I solved this issue by removing the whole database and recreate it.

Obivously, this happens, if you have older version of table in database than you want to use, thus that column does not exist in that table.

like image 1
libik Avatar answered Nov 02 '22 13:11

libik