顧客は複数のアドレスを持つことができますが、優先アドレスは1つしかないと仮定します。モデルクラスのプロパティで優先アドレスのみが保持され、ラムダ式を別のオブジェクト、たとえばOrderで使用するようにするにはどうすればよいですか? エンティティフレームワークの関係 - 優先顧客アドレス
私のモデルクラス
は次のようになります。「指定された型のメンバー:私はエラーが言ってもらうしかし
_context.Order.Where(x => x.Id == 20).Select(x => x.Person.PreferredAddress);
:
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;} }
私はこれが働きたいです「PreferredAddress」は、エンティティへのLINQ ではサポートされていません。イニシャライザ、エンティティメンバ、およびエンティティのナビゲーションのみ のプロパティがサポートされています。
残念ながら、Entity FrameworkにはNHibernateの持つ数式プロパティが不足しています。それは素晴らしい機能だろう。このアドレスが日常的に必要な場合は、ビューモデル/ DTOクラスとAutoMapperを使用します。 –