选择entityframework中特定类型属性的对象列表

时间:2016-01-26 09:45:21

标签: entity-framework entity-framework-6

目前正在努力过滤这些对象具有继承属性的对象列表(称为Field),此属性称为 FieldReference 。这是一个抽象类,所有Field对象都具有此属性,但它可以是不同的类型,例如;

DebtorFieldReference

我们要做的是查询属性为DebtorFieldReference类型的所有字段,并且我们还希望过滤此DebtorFieldReference对象中名为DebtorId的值。

我们尝试了以下代码段,但EF不允许我们进行投射,我们也尝试在GetType上查询但没有成功。

var results = FieldProvider.Get(f => f.FieldOwnerTypeId == (byte)Enum.FieldReferenceType.Debtor && ((DebtorFieldReference)f.FieldReference).DebtorId == message.Reference);

我过去用NHibernate完成了这个,没有任何问题,请告诉我,我只是做错了,EF并没有受到这么大的限制: - (

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

经过一些试验和错误之后,我实际上已经开始工作了,并不完全确定为什么这会起作用但是Cast不会,但是这里就是行了它;

var results = FieldProvider.Get(f => (f.FieldReference as DebtorFieldReference).DebtorId == message.Reference);

换句话说,使用'作为'而不是强制转换,可能是强制转换,当它涉及空值时表现不同。