我正在使用实体框架和MySQL,并且每个表都有一个类型为CHAR(36)的ID列。在EDMX文件,他们都是类型的System.Guid,而SSDL XML的样子:当比较谓词中的Guid时,序列不包含任何元素与MySql.Data.Entity
<EntityType Name="Accounts">
<Key>
<PropertyRef Name="ID" />
</Key>
<Property Name="ID" Type="guid" Nullable="false" />
...
当我尝试使用任何方法(单,凡在任何等),它抛出一个InvalidOperationException指出该序列不包含任何元素。这是奇怪的部分,如果我在调试器中展开结果视图,它确实显示了元素。 GUID值是相同的,所以它应该只返回一个元素。我在下面列出了一张图片(右击保存以查看大图),但任何人都可以解释这里发生了什么?该GUID我们做比赛:
(method argument) accountID:
{7767402f-9b29-4026-b40d-6eb991748f8c}
(should match) element in results view:
{7767402f-9b29-4026-b40d-6eb991748f8c}
尝试切换到'的SingleOrDefault()'和'检查为account''null'。如果您到达下一行并且帐户为空,那么GUID不匹配。 –
这与这个问题没有关系。它当然会返回null,因为谓词失败。问题在于它不应该这样做,因为ObjectSet确实包含两个只有一个帐户和匹配ID的结果。目前的问题是为什么谓词失败。这个应用程序是为支持MSSQL和MySQL而构建的,当配置为MSSQL时,代码可以正常工作。这是特定于MySql的,但我不知道它为什么失败。如果你看图片,你会看到匹配的结果集。 –