实体框架无效的列名称

我有更多的实体框架问题。 其中一个在这里解决了实体框架多个表同名的问题

现在,当我尝试插入任何表bo或表bi我得到以下错误:

{“列名'Bo_obrano'无效。 r n列名'Bo_boano'无效。 r n列名'Bo_ndos'无效。”}

要么

{"Invalid column name 'Bi_bistamp'}

因为我通过使用电动工具反向设计了数据库,所以我现在有了像我这样的bo映射:

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

和bi映射像这样:

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());
    ....

我按照这里的指示导出映射:导出代码第一个模型映射

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


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


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

protected override void OnModelCreating( DbModelBuilder modelBuilder )
{
    modelBuilder.Entity<Bi>( ).ToTable( "dbo.Bi" );
    modelBuilder.Entity<Bi>( ).Property( p => p.bistamp).HasColumnName("actualName" ); 
}
链接地址: http://www.djcxy.com/p/94533.html

上一篇: entity framework invalid column name

下一篇: Entity Framework : Invalid Column after removing the column