0

このようにオーバーライドで指定ToTableした場合:OnModelCreating

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 に答える