C# 在所选数据源上找不到名为[数据库列]的字段或属性
我在VisualStudio2010中编程时遇到了这个奇怪的错误。我在SQL Server中有一个名为“tag_id”的列。它是我的表的主键。如果我试图在VisualStudio中的任何引用中使用“tag_id”,应该是这样的C# 在所选数据源上找不到名为[数据库列]的字段或属性,c#,sql,sql-server,visual-studio-2010,C#,Sql,Sql Server,Visual Studio 2010,我在VisualStudio2010中编程时遇到了这个奇怪的错误。我在SQL Server中有一个名为“tag_id”的列。它是我的表的主键。如果我试图在VisualStudio中的任何引用中使用“tag_id”,应该是这样的 <asp:BoundField DataField="tag_id" HeaderText="Current Tags"/> 我用它的任何地方。根据使用情况,我会得到各种不同的错误,但要点是它告诉我列tag_id不存在。但确实如此!让这段代码正常工作的唯一
<asp:BoundField DataField="tag_id" HeaderText="Current Tags"/>
我用它的任何地方。根据使用情况,我会得到各种不同的错误,但要点是它告诉我列tag_id不存在。但确实如此!让这段代码正常工作的唯一方法是从SQL Server复制“tag_id”,即字面上的单词“tag_id”,并将其粘贴到Visual Studio中。虽然拼写完全相同,但除非我从SQL Server复制并粘贴它,否则它将无法工作。此外,如果我从VisualStudio复制并粘贴一个查询并将其放入SQL Server,它会说找不到“tag_id”。就好像VisualStudio中的文本不适用于本专栏。如果我只输入名称,其他所有列都没有问题
以前有人见过这个吗
更新:
在阅读了戈登和格兰利的建议后,我试图检查下划线。对于这一列,“tag_id”,当我将它从VisualStudio复制并粘贴到notepad++时,它显示为“tag_id”。当我从SQL Server复制并粘贴“tag_id”时,它显示为“tagUS_id”。即使我把它粘贴到这里,它也只是说“tag_id”,我不得不手动添加“US”。但在记事本++中,它显示“tag”,然后没有空格,字母“US”以黑色突出显示,然后是“id”
这只发生在该列中。其他带有下划线的列可以正常工作。其他主键工作正常,其他外键工作正常。hmmmmm?我同意Gordon Linoff的观点,即下划线的实际ASCII/Unicode代码由于某种原因是不同的。尝试在文本文件中捕获VS2010行(可能已经是),并将SQL查询保存到文件中。然后比较tag_id中所有字符(尤其是下划线)的ASCII/Unicode值,您应该会发现差异。如果它是普通的ASCII码,那么它的十六进制值很可能是5F,但是您可能确实无意中在VisualStudio中使用了Unicode 看 Visual Studio中的文本编辑器“常规”下有一个选项-自动检测不带签名的UTF-8编码,这可能会导致或可能不会导致这些差异 有关下划线的可选Unicode字符,请参见此处的“另请参阅”部分: (我会简单地发表评论,但没有足够的声誉) 注:记事本++是免费的,易于使用,使用TextFX转换功能显示转换为各种形式的文本(十六进制32将是有用的)。我更喜欢它
希望这有帮助这不是最好的解决方案,但在调查了许多选项后,我无法找到问题的根本原因。我刚刚在Microsoft SQL Server中删除了该表并重新创建了它。在那之后,一切都如期进行 如果让我猜的话,下划线可能不同。有短下划线和长下划线的例子。不过,我必须承认,我只见过连字符的问题。
string sql = "INSERT INTO [tag_names] ([tag_id], [name], [created_by], [created_date]) VALUES ('{0}','{1}', '{2}', GETDATE())";