0

好的,所以在实体框架中,我有两个类,

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; }
}

问题是,一个用户一次只能喜欢一个帖子——如果我喜欢currPost.Likes.Add(currUser);,它会将该用户从它之前喜欢的任何帖子中删除,并使其像这个新帖子一样。查看数据库,事实证明 EF 没有从帖子中引用用户,而是为每个引用帖子的用户提供了一个 Post_ID 列。

我将如何强制 EF 在我的 Posts 表中创建一个数组或用户的东西,而不是它现在是如何做的?我是否误解了 ICollection 的意义(例如,我应该使用列表还是数组?)谢谢!

4

1 回答 1

0

您正在寻找的是多对多的集合。EF 允许您执行此操作的方法之一是使用模型构建器。请查看我关于导航属性的帖子,了解如何执行此操作的示例(在“多关系”部分中)。

这将要做的是在数据库中创建一个链接表,以允许许多用户喜欢一个帖子和许多用户喜欢的帖子。

然后你可以这样表达你的模型:

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 回答