我正在玩EF Code First,需要一些帮助。实体框架代码首先 - 多对多外键问题
用户可以创建许多帖子。
用户可以推荐很多文章
文章可以有很多用户推荐。
鉴于此代码:
public class User
{
public int UserID { get; set; }
public string Name { get; set; }
public virtual ICollection<Post> Posts { get; set; }
public virtual ICollection<Post> Recommendations { get; set; }
}
public class Post
{
public int PostID { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
public virtual ICollection<User> RecommendingUsers { get; set; }
}
modelBuilder.Entity<Post>()
.HasMany(x => x.RecommendingUsers)
.WithMany(x => x.Recommendations)
.Map(x => x.MapLeftKey("PostID")
.MapRightKey("UserID")
.ToTable("Recommendations"));
我结束了在Post表一个额外的 “User_UserID” 一栏,它是一个使用外键:
帖子ID(PK,INT,不空)
用户ID(INT非空)
User_UserID(FK,INT,NULL)
为什么是不是使用用户ID为t他外键?
你确定。我刚刚使用了你的代码,它按预期工作。 – 2011-05-12 19:29:28
我甚至尝试手动删除数据库并让EF重新创建它。我仍然以User_UserID列结束。那么,你只有你的PostID和UserID列? – Matador1006 2011-05-12 19:42:20
是的。我只将所有ID重命名为Id。它的工作。 – 2011-05-12 19:45:25