Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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# 带有实体框架的MySql连接器:比较LINQ Where子句中的Char(36)guid_C#_Mysql_Entity Framework_Linq To Entities_Mysql Connector - Fatal编程技术网

C# 带有实体框架的MySql连接器:比较LINQ Where子句中的Char(36)guid

C# 带有实体框架的MySql连接器:比较LINQ Where子句中的Char(36)guid,c#,mysql,entity-framework,linq-to-entities,mysql-connector,C#,Mysql,Entity Framework,Linq To Entities,Mysql Connector,我觉得这个标题很贴切 我在MySql表中使用了一个Char(36),当使用实体框架时,它会自动被识别为GUID 插入GUID没有问题,但是在WHERE子句中尝试比较GUID是一场噩梦 我所尝试的: 首先,我尝试了一个WHERE element.GUID==GuidToCompare 这导致LINQ to Entities无法识别方法“System.Object CompareObject Equal(System.Object,System.Object,Boolean)”方法,并且无法将此方法

我觉得这个标题很贴切

我在MySql表中使用了一个Char(36),当使用实体框架时,它会自动被识别为GUID

插入GUID没有问题,但是在WHERE子句中尝试比较GUID是一场噩梦

我所尝试的:

首先,我尝试了一个
WHERE element.GUID==GuidToCompare

这导致
LINQ to Entities无法识别方法“System.Object CompareObject Equal(System.Object,System.Object,Boolean)”方法,并且无法将此方法转换为存储表达式。

然后我尝试将值转换为字符串,如下所示:

WHERE element.GUID.ToString()==GuidtoCompare.ToString()

这导致了此错误:
LINQ to Entities无法识别“System.String ToString()”方法,并且无法将此方法转换为存储表达式。


所以不管怎样,我都无法比较它们。如果guid不起作用,我准备不使用它

我知道出了什么问题:那只是我自己的愚蠢错误


比较guid是非常正确的,这不是导致错误的部分。实际上,同一LINQ查询的后面部分触发了该错误。它将
ProviderUserKey(Object)
ID(int)
进行了比较。
ProviderUserKey
本质上是一个int,我只需要在VB.NET中显式声明它的类型(
CType(Object,Integer)
,或者在C#中显式声明它的类型(
(int)Object

什么是element.GUID的类型?Guid还是字符串?嗯,其中一个不是Guid,或者L2E看不到
CompareObjectEqual
。L2E当然支持直接比较两个GUI。检查你的类型。@Craig哦,天哪。。。我知道出了什么问题,请看答案