【问题标题】:passing connection string to DBcontext without using app.config在不使用 app.config 的情况下将连接字符串传递给 DBcontext
【发布时间】:2020-06-27 21:43:08
【问题描述】:

我是使用 Code First 方法的新手。如果我遗漏了一些非常基本的东西,请原谅。

我需要将连接字符串传递给 DBcontext,但我不能将该连接字符串传递给 app.config,因为我在类本身中调用了一个块,它给了我连接字符串。

Class A : Dbcontext , IA
{
    class A() : base () 
    {
        //call to nugget for giving a connection string
        var connString=nugget.connString();
        this.Database.Connection.ConnectionString = connString;
    }

}`

这种方法正确吗?我无法在我的本地系统上对此进行测试。 或者我应该将 connString 传递给 base

类 A() : 基类 (connString)

【问题讨论】:

  • 你试过了吗?

标签: c# ef-code-first connection-string dbcontext


【解决方案1】:

DbContext 类有一个构造函数,您可以在创建它的新实例时传递连接字符串。这里最好的方法是也为您的 A 类创建一个构造函数,并从外部而不是在您的类内部获取连接字符串参数。但是,如果您非常确定要在课堂上使用连接字符串,那么至少您应该像这样将其设为可选。

    public class MyDbContext : Dbcontext , IA
    {
        public static readonly _defaultConnString = nugget.connString();

        public class MyDbContext() : base(_defaultConnString) { }

        public class MyDbContext(string connString) : base(connString) { }
    } 

【讨论】:

  • 这给了我一个异常。在为 A 注册的 IA 解决统一时,抛出异常“无法构造类型 String。您必须配置容器以提供此值。”
  • @PRIYANARANG 我不熟悉统一。但是如果这是某种与依赖注入相关的问题,那么必须有一个解决方法,因为它说“你必须配置容器”..或者你可以删除带有字符串参数的第二个构造函数并再试一次,因为你是可能使用第一个。
  • 异常的原因必须是我使用的多个构造函数,默认情况下,调用以最大参数数进入 constrictor。一旦我删除了参数化构造函数,它就可以正常工作了
猜你喜欢
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
相关资源
最近更新 更多