C# 列名无效。[节点名称(如果有)=t0,列名=版本]
我在Windows Phone Mango应用程序中尝试查询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)) 你知道这里可能有什么问题吗?我安装
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!