是否可以为EF 6的Guid数据类型实现.Equals?

时间:2017-01-17 18:55:28

标签: c# sql-server entity-framework linq

我不想使用' ==',我想使用.Equals,这将允许我使用泛型做一些更复杂的事情。

至少我希望能够在不获取NotSupportedException的情况下执行此查询。我想实现.Equals与Guid一起工作就像它适用于原始类型,如int,bool和string。我已经用NHibernate做了类似的事情来实现构建查询的自定义方法,我希望能够对EF做同样的事情。

var id = Guid.NewGuid();
_dbContext.MyEntityType.Single(x => x.Id.Equals(id));

1 个答案:

答案 0 :(得分:5)

Guid 已经实施Equals方法。在这种情况下,它的EF不支持将您的特定用法转换为SQL,因此除非您计划编写自己的查询提供程序,否则您无法理解如何翻译该代码。所有你不能写的表达方式,它不知道如何变成SQL,在这种情况下意味着在你的表达式中写==(如果这是EF知道如何翻译)比Equals