Entity framework 具有额外属性的同一表上的实体框架多对多关系
我有以下模型UsersId、Name和friends用户Id、friends用户Id、日期。 我的用户实体:Entity framework 具有额外属性的同一表上的实体框架多对多关系,entity-framework,Entity Framework,我有以下模型UsersId、Name和friends用户Id、friends用户Id、日期。 我的用户实体: public class User { public int Id { get; set; } public string Name { get; set; } } 如何为Friend表创建实体上下文?您可以从以下几行开始 public class User { public int Id { get; set; } public string Name
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
如何为Friend表创建实体上下文?您可以从以下几行开始
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Friend> Friends { get; set; }
}
public class Friend
{
[Key, Column(Order=0)]
public int User_Id { get; set; }
[Key, Column(Order=1)]
public int Friend_Id { get; set; }
public DateTime FriendshipDate { get; set; }
[ForeignKey("User_Id")]
public User User { get; set; }
[ForeignKey("Friend_Id")]
public User UserFriend { get; set; }
}
编辑:实际上,您可能需要重命名好友导航,这样它就不会与类名冲突,但fluent的等效名称是:
class MyContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Friend> Friends { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Friend>()
.HasKey(f => new { f.User_Id, f.Friend_Id});
modelBuilder.Entity<Friend>()
.HasRequired(f => f.User)
.WithMany()
.HasForeignKey(f => f.User_id);
modelBuilder.Entity<Friend>()
.HasRequired(f => f.UserFriend)
.WithMany()
.HasForeignKey(f => f.Friend_Id);
}
}
非常感谢你。但是您能告诉我如何使用modelBuilder实现它吗?请参见编辑。可能必须将导航好友重命名为FriendUser或类似名称。您需要一个包含Id1、Id2的好友表。