0

Ich habe begonnen, Entity Framework-Code Erste Modellierungstechnik verwendet und haben viele Beispiele für die Umsetzung einer zu viele (1-N) Beziehung mit DataAnnotation und FluentAPI aber alle Beispiele verwenden ICollection gesehen, während Domain-Klassen zu modellieren. Ich habe bereits generische ObservableCollection in meinen Domain-Klassen verwendet und nicht beabsichtigen, es zu ändern.Konfigurieren von Domänenklassen für die Verwendung von ObservableCollection mit EF?

Zeit, während die Angabe der Konfiguration mit FluentAPI, ich bin immer Fehler folgende:

HasRequired(t => t.App) 
    .WithMany(t => t.EndPoints) // error here 
    .HasForeignKey(t => t.App); 

Cannot implicitly convert Type 'EndPoints' to 'ICollection'.

Hinweis: EndPoints Klasse ObservableCollection realisiert.

Meine Frage ist, wie es funktioniert?

Folgende ist meine Entitätsdefinition:

public class ModelBase 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

public class RuleApp : ModelBase 
{   
    public EndPoints EndPoints { get; set; } 
} 

public class EndPoint : ModelBase 
{ 
    public RuleApp RuleApp { get; set; } 
} 

public class EndPoints : GenericObservableCollection<EndPoint> { } 

public class GenericObservableCollection<T> : ObservableCollection<T> 
{ 
    // other common stuff handling 
} 
+0

Bitte Zeigen Sie uns, wollen –

+0

, Ihre Entitätsdefinition habe ich die Definition –

+0

hinzugefügt, warum Sie Endpoints mit einer Klasse verwenden insted Eigenschaft verwenden? Versuchen Sie, Ihre RuleApp EndpointsProperty zu ändern: public virtual ObservableCollection EndPoints –

Antwort

0

Dies ist ein Beispiel, das zu tun:

public class ModelBase 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

public class RuleApp : ModelBase 
{  
//This for create RelationShip 
    public virtual ICollection<EndPoint> EndPoints { get; set; } 

    [NotMapped] 
    Public EndPoints GenericEndPoints { get; set; } 

    public void TransferToGenric() 
    { 
      GenericEndPoints =new EndPoints(EndPoints) 
    } 

} 

public class EndPoint : ModelBase 
{ 
    public RuleApp RuleApp { get; set; } 
} 

public class EndPoints : GenericObservableCollection<EndPoint> { } 

public class GenericObservableCollection<T> : ObservableCollection<T> 
{ 
    // other common stuff handling 
} 

Wenn Sie GenericObservableCollection als Property EF Mapped alle Immobilien in Ihrem calss, so dass ich erstellen nur eine Eigenschaft, um den Endpunkt zu verwenden und danach wandle ich ihn in GenericObserveableCollection um. im constractor von Ihnen EndPoins Klasse Sie alle Daten in Endpunkt featch zu tun, was Sie

+0

Ich kenne diesen Ansatz, aber das ist nicht der bequeme Weg, es zu tun. Ich suche einen Weg, der meine Domain-Klassen nicht beeinflussen wird. –

+0

Warum möchten Sie Ihre Domain nicht ändern? –

+0

In erster Linie, weil meine Modell-/Domänenklasse an die WPF-Anwendung in Unternehmen gebunden ist, ist es nie eine gute Idee, sie für EF zu ändern. Und ich denke, dass es eine Lösung für mein Problem geben muss, ansonsten muss ich mich für einen anderen O/R-Mapper entscheiden. –

Verwandte Themen