Angenommen, ein Kunde kann mehrere Adressen haben, aber nur eine "Preferred" -Adresse. Wie kann ich es so machen, dass eine Eigenschaft der Modellklasse nur die bevorzugte Adresse enthält und mit einem Lambda-Ausdruck über ein anderes Objekt arbeitet, zum Beispiel Order?Entity Framework-Beziehungen - Bevorzugte Kundenadresse
Klassen Mein Modell sieht wie folgt aus:
_context.Order.Where(x => x.Id == 20).Select(x => x.Person.PreferredAddress);
Jedoch habe ich eine Fehlermeldung, erhalten:
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;}
}
ich diese arbeiten möchte
„Der angegebene Typ Mitglied 'PreferredAddress' wird in LINQ für Entitäten nicht unterstützt Nur Initialisierer, Entitätsmitglieder und Entitätsnavigation Eigenschaften werden unterstützt. "
Leider Entity Framework fehlt Formel Eigenschaften wie NHibernate hat. Es wäre ein großartiges Feature. Wenn Sie diese Adresse regelmäßig benötigen, verwenden Sie eine Ansichtsmodell-/DTO-Klasse und AutoMapper. –