Entity framework 具有额外属性的同一表上的实体框架多对多关系

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

我有以下模型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 { 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的好友表。