C# 实体框架多对多代码优先

C# 实体框架多对多代码优先,c#,entity-framework,many-to-many,C#,Entity Framework,Many To Many,我有以下简化课程: using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.ModelConfiguration.Conventions; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EFTest { public class Text

我有以下简化课程:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EFTest
{
    public class TextContext : DbContext
    {
        public DbSet<People> People { get; set; }
        public DbSet<File> Files { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
        }
    }

    public class People
    {
        public People()
        {
            Files = new List<File>();
        }
        public int PeopleId { get; set; }
        public string Nombre { get; set; }
        public List<File> Files { get; set; }
    }

    public class File
    {
        public File()
        {
            Friends = new List<People>();
            Foes = new List<People>();
        }
        public Int16 FileId { get; set; }
        public List<People> Friends { get; set; }
        public List<People> Foes { get; set; }
    }
}
创建数据库时,我希望它有一个用于人员和文件的联合表。但是没有创建任何表,只有表人员和表文件

以下是实体数据模型的图像

我希望模型显示多对多关系,因为每个人可能有很多文件,每个文件可能有很多人

我是EF的新手,我知道我需要使用Fluent Api来配置关系,但到目前为止,我尝试的所有代码都失败了


感谢您的帮助

尝试使用virtual关键字设置相关实体,以便EF可以覆盖并实现这些导航属性本身。此外,我倾向于在具体类上使用属性接口。你的电话

public class People
{
    public People()
    {
        Files = new List<File>();
    }
    public int PeopleId { get; set; }
    public string Nombre { get; set; }
    public virtual ICollection<File> Files { get; set; }
}

public class File
{
    public File()
    {
        Friends = new List<People>();
        Foes = new List<People>();
    }
    public Int16 FileId { get; set; }
    public virtual ICollection<People> Friends { get; set; }
    public virtual ICollection<People> Foes { get; set; }
}

尝试使用虚拟和Icollection。结果完全一样。