0

如果我像这样ToTableOnModelCreating覆盖中指定:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.Entity<Team>()
    .MapSingleType()
    .ToTable("my_teams");    
}

它创建dbo.my_teams,但是如果我将它分成如下类:

public class TeamMap : EntityConfiguration<Team>
{
  public TeamMap()
  {
     MapSingleType()
     .ToTable("my_teams");
  }
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.Configurations.Add(new TeamMap());
}

它创建dbo.Teams. 任何想法为什么?

4

1 回答 1

1

这似乎是 MapSingleType() 重载中的一个错误,它不接受任何参数......感谢您找到它!作为一种解决方法,如果您使用 MapSingleType() 的其他重载指定所有列映射,您将获得预期的结果。例如:

public class TeamContext : DbContext
{
    public DbSet<Team> Teams { get; set; }

    public class TeamMap : EntityConfiguration<Team>
    {
        public TeamMap()
        {
            MapSingleType(t => new { t.Id, t.Name })
            .ToTable("my_teams");
        }
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new TeamMap());
    } 
}

public class Team
{
    public int Id { get; set; }
    public string Name { get; set; }
}

杰夫

于 2010-08-04T18:41:10.200 回答