Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在所选数据源上找不到名为[数据库列]的字段或属性_C#_Sql_Sql Server_Visual Studio 2010 - Fatal编程技术网

C# 在所选数据源上找不到名为[数据库列]的字段或属性

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不存在。但确实如此!让这段代码正常工作的唯一

我在VisualStudio2010中编程时遇到了这个奇怪的错误。我在SQL Server中有一个名为“tag_id”的列。它是我的表的主键。如果我试图在VisualStudio中的任何引用中使用“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())";