列名无效。 [节点名称(如果有)= t0,列名称= 版本]
Posted
技术标签:
【中文标题】列名无效。 [节点名称(如果有)= t0,列名称= 版本]【英文标题】:The column name is not valid. [ Node name (if any) = t0,Column name = version ] 【发布时间】:2012-01-29 18:31:16 【问题描述】:尝试在我的 Windows Phone Mango 应用程序中查询 SQLCE
数据库时遇到问题。
执行时出现异常
foreach (var item in myDataContext.MyTable.Select(item => item))
The column name is not valid. [ Node name (if any) = t0,Column name = version ]
奇怪的是,当我基于任何单个列执行查询时,它工作正常
foreach (var item in myDataContext.MyTable.Select(item => item.SomeColumn))
知道这里有什么问题吗?
【问题讨论】:
你的版本栏是primary key
吗?
我没有版本栏
【参考方案1】:
我安装了LINQ to SQL Debug Visualizer 来找出幕后究竟生成了什么查询
SELECT [t0].[version], [t0].[ID], [t0].[Volume], ... similarly rest of the columns
FROM [MyTable] AS [t0]
这很奇怪,因为我的表中没有版本列(曾经)。我查看了我的模型,发现此列已定义
[Column(IsVersion = true)]
private Binary version;
我通过注释掉这两行来删除列并重新运行应用程序。新生成的 SQL 没有任何 version
列,我的查询运行良好。
我正在使用SQLCEMangoCodeGenerator
生成 LINQ to SQL 类。我猜这个工具有错误,因为它生成了一个我的表中没有的额外列
【讨论】:
尝试使用 SQL Server Compact Toolbox 生成 DataContext!【参考方案2】:我在使用“SQLCEMangoCodeGenerator”工具时遇到了同样的问题。
我开始使用“SQL Server Compact Toolbox”工具,没有遇到任何问题: http://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1/
(在上述网站上搜索“NEW:DataContext”以获取屏幕截图。安装扩展程序后,单击“工具”菜单中的“SQL Server Compact Toolbox”)
【讨论】:
【参考方案3】:我通过删除整个数据库并重新创建它解决了这个问题。
显然,如果您在数据库中的表版本比您想要使用的旧版本,那么该表中不存在该列。
【讨论】:
【参考方案4】:在带有 SQL Server Managment Studio 的 SqlCE.sdf 中运行:
DELETE FROM [User] WHERE [User].[UserName] = "zz"
遇到类似问题,列名无效,但将quotations更改为apostrophes:
DELETE FROM [User] WHERE [User].[UserName] = 'zz'
它成功了!
【讨论】:
以上是关于列名无效。 [节点名称(如果有)= t0,列名称= 版本]的主要内容,如果未能解决你的问题,请参考以下文章