C# 实体框架列名无效

C# 实体框架列名无效,c#,entity-framework,entity,C#,Entity Framework,Entity,我在实体框架方面还有一些问题。 其中一个在这里解决了 现在,当我尝试插入表bo或表bi时,我得到以下错误: {“无效的列名'Bo_obrano'。\r\n无效的列名 'Bo_boano'。\r\n无效的列名'Bo_ndos' 或 {“无效列名'Bi_bistamp'} 当我使用电动工具对数据库进行反向工程时,我现在有了如下bo映射: public boMap() { // Primary Key HasKey(t => new { t.obrano, t.boano

我在实体框架方面还有一些问题。 其中一个在这里解决了

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

{“无效的列名'Bo_obrano'。\r\n无效的列名 'Bo_boano'。\r\n无效的列名'Bo_ndos'

{“无效列名'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);
    }
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());
    ....
bi映射如下所示:

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());
    ....
我的上下文类如下所示:

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());
    ....
公共类PHCDbContext:DbContext { //类通过反向映射 公共DbSet DadosLinhasEncomendas{get;set;} 公共DbSet dadoscabecalhosencodas{get;set;} ... 公共PHCDbContext(字符串连接):基本(连接) { Database.SetInitializer(null); } 模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder) { 添加(新的BiMap()); 添加(新的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" ); 
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable(“dbo.Bi”);
modelBuilder.Entity().Property(p=>p.bistamp).HasColumnName(“actualName”);
}

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

很抱歉回复太晚,但例如在我的bimap类上没有以下行:ToTable(“bi”);property(t=>t.bistamp)。HasColumnName(“处理注入和数据库映射?