C# EF未为虚拟属性创建表

C# EF未为虚拟属性创建表,c#,entity-framework,ef-code-first,entity-framework-migrations,C#,Entity Framework,Ef Code First,Entity Framework Migrations,我首先使用EF和代码。我的模型包含两个虚拟属性,如: ClassA public int Id { get; set; } public string Name { get; set; } public virtual List<int> Teams { get; set; } public virtual List<int> Levels { get; set; } ClassA 公共int Id{get;set;} 公共字符串名称{get;set;} 公共虚拟列表

我首先使用EF和代码。我的模型包含两个虚拟属性,如:

ClassA

public int Id { get; set; }
public string Name { get; set; }
public virtual List<int> Teams { get; set; }
public virtual List<int> Levels { get; set; }
ClassA
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟列表团队{get;set;}
公共虚拟列表级别{get;set;}
EF为我创建了db表,只有ClassA表。没有表可以存储团队和级别数据。当我运行addmigration命令时,创建的迁移文件是空的,因为EF认为并没有挂起的更改。另外,当我运行更新数据库命令时,EF表示没有挂起的更改

我在这里遗漏了什么?

为什么不:

public class Team { 
    public int Id { get; set; }
    public virtual ICollection<Player> Players { get; set; }
}
public class Level { 
    public int Id { get; set; }
    public virtual ICollection<Player> Players { get; set; }
}
public class Player {
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Team> Teams { get; set; }
    public virtual ICollection<Level> Levels { get; set; }
}
假设你在你的上下文中有这些

var player1 = new Player(){Teams = ",1,2,"}
var player2 = new Player(){Teams = ",3,2,"}
现在,你可以通过

var players = context.Players.Where(p=>p.Teams.Contains(",2,"));

不能将int作为映射到表的实体。为什么会有额外的表?您还没有定义它们,或者至少没有在代码中显示它们。
var players = context.Players.Where(p=>p.Teams.Contains(",2,"));