私は、Entity Framework 4、POCOを使用した多対多挿入プロセスに詳しくはありません。投稿、コメント、タグの3つのテーブルを持つブログがあります。 A ポストは多くを持つことができますタグとタグは多くの場合投稿にすることができます。ここでポストとタグにモデルです:私は新しいポストを追加している今エンティティフレームワーク4多対多挿入?
public class Tag
{
public int Id { get; set; }
[Required]
[StringLength(25, ErrorMessage = "Tag name can't exceed 25 characters.")]
public string Name { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
public class Post
{
public int Id { get; set; }
[Required]
[StringLength(512, ErrorMessage = "Title can't exceed 512 characters")]
public string Title { get; set; }
[Required]
[AllowHtml]
public string Content { get; set; }
public string FriendlyUrl { get; set; }
public DateTime PostedDate { get; set; }
public bool IsActive { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
、私が行うには正しい方法だろうかわからないんだけど。私は、私はその投稿の複数のタグを選択できるテキストボックスを持っていると思っています(この部分は既に完成しています)、私のコントローラでは、タグが既に存在するかどうかを確認します。私は新しいタグを挿入します。しかし、私はEFのために作成したモデルに基づいていても、PostsTagsテーブルを作成するのか、それとも、タグと投稿テーブルだけを作成して、2つのリンクを作成するのかはわかりません。
新しい投稿を挿入し、その投稿にタグを設定するにはどうすればよいですか?それはちょうどnewPost.Tags = Tags
です(タグは選択されていますが、すでに存在するかどうかを確認する必要がありますか?)、そして_post.Add(newPost);
のようなものですか?
ありがとうございました。
ちょっとサックスマン、あなたはカスタム初期設定をしていますか? (DbDatabase.SetInitializer)モデルを変更している場合は、EFがデータベースを構築して、モデルとモデルがデータベースに一致するようにする必要があります。これは、多対多がうまく動作しない理由です。あなたがこれを行う方法を知る必要がある場合は、私に教えてください! IMHO、あなたは本当にあなたのドメインモデルで検索エンティティを定義するべきではありません。 EFはあなたのためにこの作業を行い、それを透明にします。 – Paul
こんにちはポール、私は 'DropCreateDatabaseIfModelChanges'にEFを設定しました。多対多リレーションシップが動作するかどうかを確認するために、もう一度ポスティングしてみます。ありがとう。 – Saxman