2017-01-02 7 views
0

EFコアでクラス名を変更すると、空のマイグレーションビルダが表示されます。EFコア、マイグレーションの定義でコードの最初のテーブルの名前が検出されない、Scafolderが空です

古いEFでは、通常、テーブルの名前を変更するコードを自動生成します。

しかし、今CommentMasterにEventCommentを変更EFコアに

public class EventComment : Comment 
{ 
    [Key] 
    public int CommentID { get; set; } 

    public int? ParentID { get; set; } 
    public virtual EventComment Parent { get; set; } 

    public int EventID { get; set; } 
    public virtual EventMaster EventMaster { get; set; } 

} 

public class Comment 
{ 
    public string CommentTitle { get; set; } 

    public string CommentDetails { get; set; } 

    public int UpVoteCount { get; set; } 
    public int DownVoteCount { get; set; } 
    public int CommentEmotion { get; set; } 

    public string CommentedByID { get; set; } 
    public virtual ApplicationUser ApplicationUser { get; set; } 
} 

を働いていません。移行は空です。私はこれが原因EFコアデフォルト・テーブル・マッピングconvention(ハイライトは私です)のです

 builder.Entity<EventComment>() 
      .HasOne(e => e.EventMaster) 
      .WithMany() 
      .HasForeignKey(m => m.EventID); 

     builder.Entity<EventComment>() 
      .HasOne(e => e.ApplicationUser) 
      .WithMany() 
      .HasForeignKey(m => m.CommentedByID); 

     builder.Entity<EventComment>() 
      .HasOne(e => e.Parent) 
      .WithMany() 
      .HasForeignKey(x => x.ParentID); 

答えて

1

を設定するための流暢APIを使用

:規約により

、各エンティティは、マップするための設定になります派生したコンテキストでエンティティを公開するDbSet < TEntity>プロパティと同じ名前ののテーブルに移動します。 DbSet < TEntity>が指定されたエンティティのに含まれている場合は、クラス名が使用されます。

これは以前のEFとは異なると思います。不可欠な部分は、エンティティクラスの名前を変更しましたが、古いDbSetプロパティ名をそのまま使用すると、テーブル名は変更されません。

+0

@Ival Stoevありがとうございます、それは今働いています。 –

関連する問題