好的,所以在Entity Framework中我有两个类,
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引用用户,而是为每个引用帖子的用户都有一个Post_ID列。
如何强制EF在我的帖子表格中创建数组或用户的某些内容,而不是现在如何进行?我是否误解了ICollection的意思(比如,我应该使用List还是Array?)谢谢!
答案 0 :(得分:0)
您正在寻找的是多对多的收藏品。 EF允许您执行此操作的方法之一是使用模型构建器。请查看my post on navigation properties以获取如何执行此操作的示例(在“多关系”部分中)。
这样做的目的是在数据库中创建一个链接表,以允许许多用户喜欢用户喜欢的帖子和许多帖子。
然后你可以像这样表达你的模型:
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; }
}