2016-03-21 5 views
2

Ich habe eine große ASP.NET MVC-Anwendungsdatenbank zuerst und Entity Framework. Es funktioniert gut mit db zuerst. Ich möchte die Anwendung zuerst in Code ändern. Und als Ergebnis habe ich einen Fehler:Entity Framework Code First - Ungültige Spalte ID

{"Invalid column name 'ID'"} 

Auch ich habe einige Vererbungsklassen.

Alle Fremdschlüssel in OnModelCreating Methode abgebildet und in Klassen wie [ForeignKey ("class name")] Attribut

Dieser Teil meines Codes ist:

[Table("Member")] 
public partial class Member 
{ 
    public Member() {} 

    public int ID { get; set; } 

    [ForeignKey("Seed1")] 
    public int? SeedID { get; set; } 

    public virtual Seed Seed1 { get; set; } 

    ... 
} 

[Table("Seed")] 
public partial class Seed : Member 
{ 
    public Seed() 
    { 
     Members = new HashSet<Member>(); 
    } 

    public int Locale { get; set; } 

    public virtual ICollection<Member> Members { get; set; } 

    ... 
} 
+0

Können Sie zeigen, wo Sie das Modell definiert und die Tabellenstruktur haben? – user1666620

+0

Woher wissen Sie, dass der ungültige Spaltenfehler von diesen Klassen stammt? Was ist der Code, der den Fehler verursacht hat? –

+0

Wenn ich die Spalte 'ID' beispielsweise in 'ID1' in Member-Klasse umbenenne, erhalte ich manchmal den Fehler "Ungültige Spalte 'ID1'". –

Antwort

0

Die Lösung lautet:

[Table("Member")] 
public partial class Member 
{ 
    public Member() {} 

    public virtual int ID { get; set; } 

    public int? SeedID { get; set; } 

    public virtual Seed Seed1 { get; set; } 

    ... 
} 


[Table("Seed")] 
public partial class Seed : Member 
{ 
    public Seed() 
    { 
     Members = new HashSet<Member>(); 
    } 

    public override int ID 
    { 
     get { return MemberID; } 
     set { MemberID = value; } 
    } 

    [NotMapped] 
    public int MemberID { get; set; } 

    public int Locale { get; set; } 
} 

public class SeedMap : EntityTypeConfiguration<Seed> 
{ 
    public SeedMap() 
    { 
     HasKey(c => c.ID); 
     Property(c => c.ID) 
      .HasColumnName("MemberID") 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 

     HasMany(e => e.Members) 
      .WithOptional(e => e.Seed1) 
      .HasForeignKey(e => e.SeedID); 
    } 
}