EF 4.1 OnModelCreating未调用

ASR*_*ASR 16 c# entity-framework-4.1 dbcontext

我有一个问题,EF 4.1没有调用,OnModelCreating所以我可以配置表等我有一个现有的数据库.这是我的连接字符串:

<add name="AcmeDBContext"
     connectionString="metadata=res://*/|res://*/|res://*/;
                       provider=System.Data.SqlClient;
                       provider connection string=&quot;
                       data source=[server];
                       initial catalog=Acme;integrated security=True;
                       multipleactiveresultsets=True;App=EntityFramework&quot;"
     providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

这是我的继承自的类DbContext:

public class AcmeDBContext : DbContext
{
  public AcmeDBContext()
    : base()
  {
    Database.SetInitializer<AcmeDBContext>(null);        
  }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();       
    modelBuilder.Entity<Vehicle>().ToTable("tblVehicle");
    modelBuilder.Entity<VehicleMake>().ToTable("tblVehicleMake");
    modelBuilder.Entity<VehicleModel>().ToTable("tblVehicleModel");
    base.OnModelCreating(modelBuilder);
  }

 }
Run Code Online (Sandbox Code Playgroud)

我已经在线阅读和阅读,但我不能指出问题所在.该OnModelCreating不会被调用,因此例外说,实体/类(汽车,VehicleMake,VehicleModel)不会在目前情况下存在,当我试图查询任何东西.

Lad*_*nka 22

您正在使用两种方法 - 您的连接字符串表示您希望首先使用模型或首先使用EDMX数据库,但您正在编写上下文以使用代码优先/流畅的api来映射数据库.一旦你使用EDMX OnModelCreating永远不会被调用.如果要使用,请使用不带元数据资源的公共SQL连接字符串OnModelCreating.

<add name="AcmeDBContext"
     connectionString="data source=[server];
                       initial catalog=Acme;integrated security=True;
                       multipleactiveresultsets=True;App=EntityFramework"
     providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)