2012-01-24 53 views
0

假设我有一个Posts表,其中字段Owner的类型为Person(其字段为Name)。使用实体框架比较两种不同类型

我试图让这个速记表达工作:

from p in Posts where p.Author == "SomeNameAsString" select p; 

这意味着我将不得不比较Person类型的对象与string

我试图覆盖Equals并重写运算符==和!=,但我仍然收到异常“DbComparisonExpression需要具有可比类型的参数”。

有没有办法让两种不同的类型在实体框架中具有可比性?

+0

作者有哪些类型? –

+0

@Tomas对不起,它的人,我固定在帖子里。 –

+0

我给出了一个简短的回答以及建议的解决方案。 –

回答

5

EF试图查询转换成SQL,虽然这样做似乎没有考虑到你的类型转换操作符。只需使用此查询来代替:

from p in Posts where p.Author.Name == "SomeNameAsString" select p; 
+0

是的,这是可能的,我只是想看看我能否为此创建一个简写。 –

+0

这是'Posts.First(p => p.Author.Name ==“blbbl”);' – WagoL

+0

@WagoL:这是不正确的。你的代码使用First而不是Where –

1

你试过

from p in Posts where p.Author.Name == "SomeNameAsString" select p; 

(如果NameAuthor属性)

+0

是的这是绝对另一种选择,如果你编写的SQL内的字符串,你可以做一个比较,p.Author.FirstName + p.Author.LastName ==“SomeNameAsString”也将工作 –

相关问题