我不想使用' ==',我想使用.Equals,这将允许我使用泛型做一些更复杂的事情。
至少我希望能够在不获取NotSupportedException的情况下执行此查询。我想实现.Equals与Guid一起工作就像它适用于原始类型,如int,bool和string。我已经用NHibernate做了类似的事情来实现构建查询的自定义方法,我希望能够对EF做同样的事情。
var id = Guid.NewGuid();
_dbContext.MyEntityType.Single(x => x.Id.Equals(id));
答案 0 :(得分:5)
Guid
已经实施Equals
方法。在这种情况下,它的EF不支持将您的特定用法转换为SQL,因此除非您计划编写自己的查询提供程序,否则您无法理解如何翻译该代码。所有你不能写的表达方式,它不知道如何变成SQL,在这种情况下意味着在你的表达式中写==
(如果这是EF知道如何翻译)比Equals
。