我正在制作一个具有以下功能的应用程序。但我被困在这个问题上。我就这样上来了。
public class User
{
public int Id { get; set; }
public ICollection<User> Followers { get; set; }
public ICollection<User> Following { get; set; }
}
关注者表将是
public class Followers
{
public int UserId { get; set; }
public int FollowerId { get; set; }
}
但在这种方法中,实体框架如何知道哪些是关注者以及我正在关注哪些?
提前致谢。
看起来您想要首先使用代码建立多对多的自引用关系?你不需要Followers
班级。只需定义User
class:
public class User
{
public int Id { get; set; }
public ICollection<User> Followers { get; set; }
public ICollection<User> Following { get; set; }
}
然后写下你的DbContext
这样类:
public class MyEntities: DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasMany(x => x.Followers).WithMany(x => x.Following)
.Map(x => x.ToTable("Followers")
.MapLeftKey("UserId")
.MapRightKey("FollowerId"));
}
}
A Followers
表将与数据库一起创建Users
桌子。您可以使用以下代码进行测试:
using (var db = new MyEntities()) {
var user1 = new User();
var user2 = new User();
var user3 = new User();
user1.Followers = new User[] { user2 };
user2.Followers = new User[] { user3 };
db.Users.Add(user1);
db.SaveChanges();
}
Update
实体框架如何知道哪些是关注者,哪些是关注者?答案是,它解释了modelBuilder
这样声明:
-
Entity<User>
: 题目是User
;
-
HasMany(x => x.Followers)
:一个用户有很多关注者;
-
WithMany(x => x.Following)
:每个关注者有很多关注者;
-
Map(...)
: 链接表是Followers
,左键指向主体(用户),右键指向主体的相关实体(关注者)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)