我试图实现这个scenario。我创建了Code First模型,然后从模型生成数据库sql,并通过MigSharp创建了手动迁移。之后,我添加了代码OnModelCreating
来更新映射。DbContext表映射
protected void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>().ToTable("dfg_Product");
modelBuilder.Entity<Customer>().ToTable("dfg_Customer");
}
问题是,仍然的DbContext试图从默认映射“dbo.Product | dbo.Customer”的数据,我需要改变映射“dbo.dfg_Product | dbo.dfg_Customer”。 我试图调试但OnModelCreating
没有调用代码。
请帮忙,我做错了什么?
编辑:添加连接字符串
<add name="DataModelContainer" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost\SQLEXPRESS;initial catalog=TestDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
问题是通过改变连接字符串来解决:如果您之前执行的应用程序和模型保持不变
<add name="DataModelContainer" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=TestDB;integrated security=True;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
我看不到任何东西你的代码立即出错。如果OnModelCreating根本没有被调用,那么可能是因为你没有使用Code First,而是使用了项目中的EDMX。你的连接字符串是什么样的? – 2012-03-04 00:06:11
已添加到问题。所有表格都已在数据库中创建,但带有前缀。我需要的只是配置EF在表名之前添加此前缀。 – mironych 2012-03-04 00:20:29