代码之家  ›  专栏  ›  技术社区  ›  mxmissile

代码优先实体配置表问题

  •  0
  • mxmissile  · 技术社区  · 16 年前

    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

    1 回复  |  直到 16 年前
        1
  •  1
  •   Jeff    16 年前

    这看起来像MapSingleType()重载中的一个bug,不需要任何参数…感谢您找到它!作为一种解决方法,如果使用mapsingeltype()的另一个重载指定所有列映射,则会得到预期的结果。例如:

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

    推荐文章