SQL 的 .NET 代码首次迁移:将迁移添加到现有数据库
.NET Code first migration for SQL: adding migration to an existing database
我被安排在一个 C# 项目上,该项目已经在 azureSQL 数据库 上实现了一个 自动代码优先迁移系统.
我们在 Azure 上有一个数据库,但我必须为此目的使用本地主机测试数据库。
在 Web.config 中已经有一种机制可以在 azure 或本地数据库之间进行选择,使用:
<add name="MS_TableConnectionString" connectionString="..." .. />
我按照以下 tutorial 一步步操作,但现在当我 运行 应用程序时,我收到以下错误:
No service registered for type 'ITableControllerConfigProvider'. Please Ensure That the dependency resolve Has Been Correctly configured.
错误由第 20 行的 WebApiConfig.cs 触发:
// 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.
我无法确定您的代码为何会抛出该错误。我认为只有三件事可能是问题的原因。
您的配置未完全初始化。尝试
config.EnsureInitialized()
您正在使用像 Ninject 这样的依赖注入框架,并且尚未设置依赖解析器。尝试
config.DependencyResolver =
新 Ninject解析器(内核)
我认为您必须将 ITableControllerConfigProvider 的实现注册为配置的依赖项解析器。
- 您可能缺少一个程序集
希望对您有所帮助。
我被安排在一个 C# 项目上,该项目已经在 azureSQL 数据库 上实现了一个 自动代码优先迁移系统.
我们在 Azure 上有一个数据库,但我必须为此目的使用本地主机测试数据库。
在 Web.config 中已经有一种机制可以在 azure 或本地数据库之间进行选择,使用:
<add name="MS_TableConnectionString" connectionString="..." .. />
我按照以下 tutorial 一步步操作,但现在当我 运行 应用程序时,我收到以下错误:
No service registered for type 'ITableControllerConfigProvider'. Please Ensure That the dependency resolve Has Been Correctly configured.
错误由第 20 行的 WebApiConfig.cs 触发:
// 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.
我无法确定您的代码为何会抛出该错误。我认为只有三件事可能是问题的原因。
您的配置未完全初始化。尝试
config.EnsureInitialized()
您正在使用像 Ninject 这样的依赖注入框架,并且尚未设置依赖解析器。尝试
config.DependencyResolver = 新 Ninject解析器(内核)
我认为您必须将 ITableControllerConfigProvider 的实现注册为配置的依赖项解析器。
- 您可能缺少一个程序集
希望对您有所帮助。