2017-04-26 4 views
0

ich einige Antworten gelesen habe, aber mein Fall nicht ausrechnen ...Entity Framework definieren Primärschlüssel als Fremdschlüssel zu einer anderen Einheit

Lassen Sie uns sagen, ich habe eine BaseEntity Klasse wie folgt:

public abstract class BaseEntity<TKey> : IEntity<TKey> 
{ 
    /// <summary> 
    /// Gets or sets the key for all the entities 
    /// </summary> 
    [Key] 
    public TKey Id { get; set; } 
} 

Und alle meine Einheiten daraus ableiten:

public class A : BaseEntity<Guid> { 
    // ...props 
} 

Also, wenn ich versuche, eine Einheit zu schaffen, ihren Primärschlüssel als eine andere Einheit zu haben, bekomme ich einen Fehler

EntityType 'X' has no key defined. Define the key for this EntityType.

Mein Code:

public class X : BaseEntity<A> { // <-- doesn't accept it 
    // ...props 
} 

Was mache ich falsch?

Warum wird diese Art von Beziehung nicht akzeptiert?

Antwort

0

Wenn Sie möchten, dass PK auch FK an ein anderes Unternehmen sein wird, sollten Sie dies tun:

public abstract class BaseEntity<TKey> : IEntity<TKey> 
{ 
    //[Key] attribute is not needed, because of name convention 
    public virtual TKey Id { get; set; } 
} 

public class X : BaseEntity<Guid>//where TKey(Guid) is PK of A class 
{ 
    [ForeignKey("a")] 
    public override Guid Id { get; set; } 
    public virtual A a { get; set; } 
} 
+0

Ty, es mir sehr helfen .... nur ein paar Dinge ... es ist nicht zu überschreiben, seine NEU. Und der * [Key] * ist notwendig in Klasse X oder wir werden diesen Fehler haben: > '' Ein oder mehrere Validierungsfehler wurden während der Modellerzeugung festgestellt: X_A_Source:: Multiplizität ist nicht gültig in Rolle 'X_A_Source' in Beziehung ' X_A '. Da sich die abhängige Rolle auf die Schlüsseleigenschaften bezieht, muss die Obergrenze der Multiplizität der abhängigen Rolle "1" sein. –

Verwandte Themen