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。结果完全一样。