asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net-mvc-4 – 获取上下文是不可构建的.添加一个默认的构造函数或者提供一个IDbContextFactory的实现.大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我尝试使用代码优先迁移时,我收到此错误.

我的上下文有一个连接名称的构造函数.

public class VeraContext : DbContext,IDbContext
{
    public VeraContext(String NameOrConnectionStringName = "VeraDB")
        : base(NameOrConnectionStringName)
    {
    }

    public IDbSet<User> Users { get; set; }
    public IDbSet<Product> Products { get; set; }
    public IDbSet<IntCat> IntCats { get; set; }
}

当项目运行时,这个连接名称注入了ninject,我也将其指定为上述代码中的默认值,但这没有帮助.

kernel.bind<IDbContext>()
    .To<VeraContext>()
    .WithConstructorArgument("NameOrConnectionStringName","VeraDB");

当我尝试使用“启用迁移”添加迁移时会抛出错误:

如果我从VeraContext中删除构造函数,它将会工作,而使用VeraData.EF.Infrastructure.VeraContext作为名称创建另一个数据库.

我假设ninject只在项目运行时传递连接字符串,而不是当我使用代码第一次迁移时.无论如何,我可以在使用代码首次迁移时注入/提供连接名称的默认值?

解决方法

基本上你需要一个默认的ctor(这是错误) – 但只是实现它会导致问题.

您必须实施IDbContextFactory才能使结果保持一致(或者您的代码迁移将无法正常工作).

这是基本的工厂…

public class MyContextFactory : IDbContextFactory<MyContext>
{
    public MyContext Create()
    {
        return new MyDBContext("YourConnectionName");
    }
}

你应该结合注射,注入和构造你的DbContext,如你所愿.

大佬总结

以上是大佬教程为你收集整理的asp.net-mvc-4 – 获取上下文是不可构建的.添加一个默认的构造函数或者提供一个IDbContextFactory的实现.全部内容,希望文章能够帮你解决asp.net-mvc-4 – 获取上下文是不可构建的.添加一个默认的构造函数或者提供一个IDbContextFactory的实现.所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。