2013-01-31 94 views
0

我有更多的实体框架问题。其中 一个是现在在这里解决entity framework multiple tables same name实体框架无效的列名称

当我尝试插入任一台博或表BI我得到以下错误:

{"Invalid column name 'Bo_obrano'.\r\nInvalid column name 'Bo_boano'.\r\nInvalid column name 'Bo_ndos'."}

{"Invalid column name 'Bi_bistamp'}

我通过使用电动工具对数据库进行反向设计,我现在可以像这样对我进行绘图:

public boMap() 
    { 
    // Primary Key 
    HasKey(t => new { t.obrano, t.boano, t.ndos }); 

    Property(t => t.obrano) 
     .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
    Property(t => t.boano) 
     .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
    Property(t => t.ndos) 
     .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
    } 

和双向映射是这样的:

public BiMap() 
     { 
      // Primary Key 
      HasKey(t => t.bistamp); 
.... 

我的上下文类看起来是这样的:

public class PHCDbContext:DbContext 
    { 
     //classes mapeadas via reverse 
     public DbSet<Bi> DadosLinhasEncomendas { get; set; } 
     public DbSet<Bo> DadosCabecalhosEncomendas { get; set; } 
... 

    public PHCDbContext(string connection):base(connection) 
      { 

       Database.SetInitializer<PHCDbContext>(null); 
      } 

      protected override void OnModelCreating(DbModelBuilder modelBuilder) 
      { 
       modelBuilder.Configurations.Add(new BiMap()); 
       modelBuilder.Configurations.Add(new boMap()); 
    .... 

我导出映射的指示在这里: export code first model mapping

我所发现这些领域本身并不存在。当我在visual studio中打开edmx文件时,我发现那些字段在类的导航属性中,在模型的关联部分中。它们代表表中的主键,而不是外键。但它们没有映射到poco类中的任何值。更少的数据库中的任何列。 那么我该如何解决这个问题? 帮助将apreciated提前 感谢

回答

0

你的情况看起来有点不同寻常,但你需要看看你的数据库,看看列名,然后在上下文中它映射:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Bi>().ToTable("dbo.Bi"); 
    modelBuilder.Entity<Bi>().Property(p => p.bistamp).HasColumnName("actualName"); 
} 
+0

对于迟到的回复感到抱歉,但例如在我的bimap类不会有以下几行:ToTable(“bi”); 属性(t => t.bistamp).HasColumnName(“bistamp”);处理注入和数据库映射? – jonniebigodes

1

我通过删除导航属性来完成它的工作。因为表格之间没有任何关联。目前为止他们都是孤立的。感谢您的帮助再次

相关问题