0

さて、Entity Frameworkには、次のような2つのクラスがあります。

public class User
{
    public int ID { get; set; }
    public string Username { get; set; }
}
public class Post
{
    public int ID { get; set; }
    public string Contents { get; set; }
    public virtual ICollection<User> Likes { get; set; }
}

問題は、ユーザーは一度に1つの投稿しか好きになれません。私が好きならcurrPost.Likes.Add(currUser);、以前に好きだった投稿からそのユーザーを削除し、この新しい投稿のようにします。データベースを見ると、EFは投稿からユーザーを参照しておらず、代わりに投稿を参照するユーザーごとにPost_ID列があります。

EFに、現在の方法ではなく、投稿テーブルにユーザーの配列などを作成させるにはどうすればよいですか?ICollectionのポイントを誤解していますか(代わりにリストまたは配列を使用する必要がありますか?)ありがとうございます!

4

1 に答える 1

0

あなたが探しているのは、多対多のコレクションです。EFでこれを行う方法の1つは、モデルビルダーを使用することです。これを行う方法の例については、ナビゲーションプロパティに関する私の投稿を参照してください([多くの関係]セクション)。

これにより、データベースにリンクテーブルを作成して、多くのユーザーが投稿を高く評価し、多くの投稿をユーザーが高く評価できるようにします。

次に、モデルを次のように表現できます。

public class User
{
    public int ID { get; set; }
    public string Username { get; set; }
    public virtual ICollection<Post> PostsThisUserLikes {get;set;}
}
public class Post
{
    public int ID { get; set; }
    public string Contents { get; set; }
    public virtual ICollection<User> UsersWhoLikeThis { get; set; }
}
于 2013-01-21T19:51:56.100 に答える