.NET代码首次迁移SQL:将迁移添加到现有数据库

时间:2015-04-30 21:02:05

标签: c# sql .net entity-framework ef-migrations

我被置于一个C#项目已经在azure上有一个SQL数据库并要求实现自动代码优先迁移系统

我们在azure上有一个数据库,但我必须为此目的使用localhost测试数据库。

在Web.config中,已经有一种机制可以在azure&或本地数据库之间进行选择:

<add name="MS_TableConnectionString" connectionString="..." .. />

我一步一步地遵循了以下tutorial,但现在当我运行应用程序时,我收到以下错误:

  

没有为类型&#39; ITableControllerConfigProvider&#39;注册服务。请确保已正确配置依赖关系解析。   

错误由 WebApiConfig.cs 在第20行触发:

// Use this class to set WebAPI configuration options
HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options));

我找到了this solution online,但它没有用。我为 System.Web.Http 添加了dependentAssembly,但仍然得到相同的错误。

这个错误背后的原因是什么?处理它的最佳方法是什么?

更新

感谢给出的反馈,我能够解决它。对于任何具有相同情况的人来说,这就是我所缺少的:

  • 错误的初始化程序上下文和 Application_Start()下的Global.asx.cs中的顺序

     // This must be first in code
     WebApiConfig.Register();
     // Context: get it from Configuration.cs
     app.Models.MobileServiceContext myDbContext = new app.Models.MobileServiceContext();
     // Configuration() should come from your app
     Database.SetInitializer(new MigrateDatabaseToLatestVersion<app.Models.MobileServiceContext, Configuration>());
     myDbContext.Database.Initialize(false);
    
  • 错误的本地连接字符串:
    由于我们有一个数据库,连接字符串没有指向与迁移创建的版本号相同的版本号 在 Web.config

    <add name="MS_TableConnectionString" connectionString=".....VERSION_NB";.../>
    

    版本号必须指向由迁移创建的版本号。

更新2

我更新了我的迁移机制,受到以下tutorial.

的启发

1 个答案:

答案 0 :(得分:1)

我无法确定您的代码为什么会抛出该错误。我认为只有三件事可能是问题的原因。

  1. 您的配置未完全初始化。尝试

    config.EnsureInitialized()

  2. 您正在使用像Ninject这样的依赖注入框架,并且尚未设置依赖项解析器。尝试

    config.DependencyResolver =         新的NinjectResolver(内核)

  3. 另请查看链接https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.mobile.service.tables.itablecontrollerconfigprovider.aspx

    我认为您必须将ITableControllerConfigProvider的实现注册为配置的依赖项解析器。

    1. 您可能错过了一个程序集
    2. 希望它有所帮助。