2010-08-04 53 views
0

如果我在OnModelCreating覆蓋像這樣指定ToTable代碼第一次實體配置ToTable問題

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。任何想法爲什麼?

回答

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; } 
} 

傑夫

+0

這工作!但現在我似乎無法與上述組合中的運動員形成一對多的關係。使用Team.Athletes和Athlete.Team屬性。 – mxmissile 2010-08-04 20:17:25

相關問題