【发布时间】:2017-12-06 21:58:32
【问题描述】:
假设客户可以有多个地址,但只有一个“首选”地址。如何使模型类上的属性仅包含首选地址并通过另一个对象(例如 Order)使用 lambda 表达式工作?
我的模型类如下所示:
public class Cusotmer
{
public virtual int Id {get; set;}
public virtual HashSet<Address> Addresses {get; set;}
public virtual Address PreferredAddress => Addresses.FirstOrDefault(x => x.Preferred)
}
public class Order
{
public virtual int Id {get; set;}
public virtual Customer Customer {get; set;}
}
我希望这个工作:
_context.Order.Where(x => x.Id == 20).Select(x => x.Person.PreferredAddress);
但是我收到一条错误消息:
"LINQ 不支持指定的类型成员 'PreferredAddress' 到实体。只有初始化器、实体成员和实体导航 支持属性。”
【问题讨论】:
-
不幸的是,Entity Framework 缺少 NHibernate 所具有的公式属性。这将是一个很棒的功能。如果您经常需要此地址,请使用视图模型/DTO 类和 AutoMapper。
标签: c# entity-framework linq