3

そこで、投稿とコメントを含むブログ データベース モデルの陳腐な例を使用します。

public class Post {
  public int Id { get; set; }
  public string Title { get; set; }
  public string Body { get; set; }
  public virtual ICollection<Comment> Comments { get; set; }
}

public class Comment {
  public int Id { get; set; }
  public string Body { get; set; }
  public virtual Post Post { get; set; }
}

もちろん、Postと 1 対多の関係がありCommentます。

Entity Framework にデータベースを作成させるPost_Idと、テーブルに列が追加されCommentsます。代わりに列に名前を付けたいのですが、クラスにプロパティをPostId追加したくありません。DataAnnotationsDbModelBuildermigrationsなど、私が知らない何かを介してこれを達成する方法はありますか?PostIdComments

これがすでに回答されている場合は申し訳ありませんが、SOまたはGoogleでさえ見つけることができませんでした. ありがとう。

4

2 に答える 2

4

そして、これを投稿した直後に、答えを見つけました。

DbContext から派生したクラスでこのメソッドを宣言します。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Entity<Comment>()
    .HasRequired(t => t.Post)
    .WithMany(t => t.Comments)
    .Map(m => m.MapKey("PostId"));
}
于 2012-08-21T05:55:13.027 に答える
1

注釈を使用してこれを行うこともできます。

public class Comment {
  public int Id { get; set; }
  public string Body { get; set; }

  public virtual Post Post { get; set; }
  [ForeignKey("Post")]
  public int PostId { get; set; }
}

は、この列が外部キーであるナビゲーション プロパティの名前である 1 つのForeignKeyAttribute引数を取ります。

于 2015-07-07T18:39:41.770 に答える