2016-10-05 1 views
1

Ich verwende zuerst Entity Framework-Code und fügte eine Klasse, die eine Liste von Klassen, deren Klassen müssen auch eine andere Liste von Klassen, aber wenn ich versuche, ein Update auf die Datenbank durch Migrationen zu tun Ich bekomme dies:Fremdschlüsseleigenschaft nicht gültig? (Entity Framework-Code zuerst)

Das ForeignKeyAttribute auf Eigenschaft 'SubscaleStatistics' auf Typ SubscaleScore 'ist nicht gültig. Der Fremdschlüsselname 'SubscaleStatisticsId' wurde nicht im abhängigen Typ 'SubscaleScore' gefunden. Der Name-Wert sollte eine durch Kommas getrennte Liste von Fremdschlüsseleigenschaftsnamen sein.

Hier ist, was meine Klassen wie folgt aussehen:

public class ExamStatistics : StatisticsData 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 
    [Required] 
    public int TestId { get; set; } 
    public IList<SubscaleStatistics> Subscales { get; set; } 
} 

public class SubscaleStatistics 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int SubscaleStatisticsId { get; set; } 
    public int TestId { get; set; } 
    public int SubscaleNumber { get; set; } 
    public int ExamStatisticsId { get; set; } 

    [ForeignKey("ExamStatisticsId")] 
    public virtual ExamStatistics ExamStatistics { get; set; } 

    public IList<SubscaleScore> SubscaleScores { get; set; } 
} 

public class SubscaleScore 
{ 
    public int TestId { get; set; } 
    public int Subscale { get; set; } 
    public double Score { get; set; } 
    public int SubscaleId { get; set; } 

    [ForeignKey("SubscaleStatisticsId")] 
    public virtual SubscaleStatistics SubscaleStatistics { get; set; } 

} 

Was mache ich falsch hier? Oder muss ich mehr Informationen liefern, um herauszufinden, was falsch ist?

+1

Haben Sie versucht, die SubscaleStatisticsId-Eigenschaft zu SubscaleScore hinzuzufügen 'Klasse als Fehlerzustände? –

Antwort

2

Sie müssen SubscaleScore eine Fremdschlüsseleigenschaft hinzufügen.

public int SubscaleStatisticsId { get; set; } 

siehe hier Tutorial: foreign keys

1

die foreignkey a id nicht

das Objekt sein muss

versuchen, etwas wie folgt aus:

public class SubscaleScore 
{ 
    public int TestId { get; set; } 
    public int Subscale { get; set; } 
    public double Score { get; set; } 
    public int SubscaleId { get; set; } 

    [ForeignKey("SubscaleStatisticsId")] 
    public int SubscaleStatisticsId { get; set; } 

    public virtual SubscaleStatistics SubscaleStatistics { get; set; } 

} 

das gleiche mit foreignkey für alle Klassen tun

Verwandte Themen