2016-03-21 6 views
2

私は大きなASP.NET MVCアプリケーションデータベースとEntity Frameworkを持っています。最初にdbでうまく動作します。私は最初にコードにアプリケーションを変更したい。結果として私はエラーが発生しました:Entity Frameworkコードファースト - 無効な列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); 
    } 
} 
関連する問題