在尝试对复杂类型执行OrderByDescending或Where表达式时,我遇到了Entity Framework抛出NotSupportedException的问题。我不确定我是否做错了什么,但这种能力不存在似乎相当令人惊讶。
示例:
让我们说我有一个名为Person的实体,它在数据库中有一组构成一个人地址的字段。在我的实体模型中,我会将这些字段建模为复杂类型,以便我可以
var city = person.Address.City;
映射这看起来很好,当我对复杂类型之外的任何属性进行Linq查询时,我得到了正确的结果
好例子:
var people = (from person in Context.People
where person.LastName == "Smith"
select person).ToList();
问题示例:
var people = (from person in Context.People
where person.Address.City == "Cleveland"
select person).ToList();
这会抛出NotSupportedException
并出现以下错误:
ComplexTypes指定的类型成员'地址'不受支持 LINQ to Entities。仅初始化程序,实体成员和实体 支持导航属性。
同样,这个信息很清楚,但非常令人惊讶的是,这种能力并不存在,因为它似乎限制了使用复杂类型的能力。任何想法或解决方法?
答案 0 :(得分:2)
我曾经遇到过这个问题。
确保Person.Address是可设置的。这将导致问题。好吗?
public Address Address { get; } = new Address();
这将解决它。
public Address Address { get; set; } = new Address();