我被安排在一个已经在azure上拥有SQL数据库的C#项目中,并要求实现一个自动代码优先迁移系统。
我们在azure上有一个数据库,但为此目的,我将不得不使用localhost测试数据库。
在Web.config中,已经有一种机制可以使用以下方法在azure的数据库或本地数据库之间进行选择:
<add name="MS_TableConnectionString" connectionString="..." .. />
我一步一步地遵循了以下教程,但是现在当我运行应用程序时,出现以下错误:
没有为“ ITableControllerConfigProvider”类型注册任何服务。请确保已正确配置依赖项解析。
WebApiConfig.cs在第20行触发错误:
// Use this class to set WebAPI configuration options
HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options));
我在网上找到了该解决方案,但是没有用。我为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";.../>
版本号必须指向通过迁移创建的版本号。
我不确定为什么您的代码会引发该错误。我认为可能仅是三件事。
您的配置尚未完全初始化。尝试
config.EnsureInitialized()
您正在使用像Ninject这样的依赖项注入框架,并且尚未设置依赖项解析器。尝试
config.DependencyResolver =新的NinjectResolver(内核)
我认为您必须将ITableControllerConfigProvider的实现注册为配置的依赖项解析器。
希望能帮助到你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句