wil*_*ten 5 migration entity-framework code-first dbcontext dbmigrator
如何在没有在所需的无参数构造函数的基础上对nameorconnectionstring进行硬编码的情况下使EF迁移工作?
EF迁移强制您向自定义dbcontext添加默认构造函数.在dbcontext的基础中,您必须提供nameorconnectionstring.
public class CustomDbContext : DbContextBase
{
public CustomDbContext ()
: base("theconnectionstringwedontwanttoset") //hardcoded connection string
{
}
Run Code Online (Sandbox Code Playgroud)
我们需要对构造函数进行硬编码这一事实是我们无法使用的,因为在我们的客户端应用程序中,我们在没有配置文件的情况下工作,并且我们动态建立连接,因为我们连接到许多不同的数据库(服务器,本地sql compact).
在探索DbMigrationsConfiguration类之后,我找到了一个名为TargetDatabase的DbConnectionsInfo属性,可以在构造函数中设置它.但即使这个解决方案也行不通.这就是我做的:
public sealed class Configuration : DbMigrationsConfiguration<CustomDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
//Setting the TargetDatabase in the hope it will use it in the migration
TargetDatabase = new DbConnectionInfo("Server=xxx;Database=xxx;Trusted_Connection=True", "System.Data.SqlClient");
}
public class MigrationInitializer : MigrateDatabaseToLatestVersion<CustomDbContext, Configuration>
{
}
Run Code Online (Sandbox Code Playgroud)
我可以看到最终在DbMigrator中使用了Activator.CreateInstance,我期望从这个类中使用TargetDatabase.Create ...或者其他东西.
欢迎任何帮助或反馈.
提前致谢,
Wilko
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |