C# 列名无效。[节点名称(如果有)=t0,列名=版本]

C# 列名无效。[节点名称(如果有)=t0,列名=版本],c#,linq-to-sql,sql-server-ce,windows-phone-7.1,C#,Linq To Sql,Sql Server Ce,Windows Phone 7.1,我在Windows Phone Mango应用程序中尝试查询SQLCE数据库时遇到问题 当我执行时会出现异常 foreach(myDataContext.MyTable.Select(item=>item)中的var项) 列名无效。[节点名称(如果有)=t0,列名=版本] 奇怪的是,当我基于任何单个列执行查询时,它都可以正常工作 foreach(myDataContext.MyTable.Select中的var项(item=>item.SomeColumn)) 你知道这里可能有什么问题吗?我安装

我在Windows Phone Mango应用程序中尝试查询
SQLCE
数据库时遇到问题

当我执行时会出现异常

foreach(myDataContext.MyTable.Select(item=>item)中的var项)

列名无效。[节点名称(如果有)=t0,列名=版本]

奇怪的是,当我基于任何单个列执行查询时,它都可以正常工作

foreach(myDataContext.MyTable.Select中的var项(item=>item.SomeColumn))

你知道这里可能有什么问题吗?

我安装该软件是为了找出幕后到底生成了什么查询,结果是

{SELECT[t0].[version],[t0].[ID],[t0].[Volume],…其他列也一样
从[MyTable]到[t0]

这很奇怪,因为我的表中没有version列(曾经)

[Column(IsVersion = true)]
private Binary version;
我通过注释掉这两行删除了该列,然后重新运行了该应用程序。新生成的SQL没有任何
版本
列,我的查询工作正常


我正在使用
SQLCEMangoCodeGenerator
生成LINQ to SQL类。我猜这个工具中存在错误,因为它生成了一个额外的列,而我的表中没有这个列

我开始使用“SQL Server Compact Toolbox”工具,但没有出现任何问题:


(在上述网站上搜索“NEW:DataContext”以获取屏幕截图。安装扩展后,单击“工具”菜单中的“SQL Server Compact Toolbox”)

我通过删除整个数据库并重新创建解决了此问题


很明显,如果数据库中的表版本比您想要使用的旧,则会发生这种情况,因此该列不存在于该表中。

在SqlCE.sdf中,使用SQL Server Management Studio运行:

从[User]删除,其中[User].[UserName]=“zz”

列名出现类似问题无效,但将引号更改为撇号

从[User]删除,其中[User].[UserName]='zz'


成功了!

您的版本列是
主键吗?我没有版本列请尝试使用SQL Server Compact工具箱生成DataContext!