2016-03-21 58 views
2

我有一個大的ASP.NET MVC應用程序數據庫第一個和實體框架。它首先與db正常工作。我想先將應用程序更改爲代碼。並因此我有錯誤:實體框架代碼優先 - 無效的列ID

{"Invalid column name 'ID'"} 

此外我有一些繼承類。

映射到OnModelCreating方法和成類作爲所有外鍵[ForeignKey的( 「類名稱」)]屬性

這是我的代碼部分:

[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

您可以顯示您定義的模型的位置和表格結構嗎? – user1666620

+0

您如何知道無效列錯誤來自這些類?產生錯誤的代碼是什麼? –

+0

如果我將列'ID'重命名爲'ID1'成員類,我會在某些時候出現錯誤「無效列ID1'」。 –

回答

0

的解決方案是:

[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); 
    } 
}