DbContext的用法(string nameOrConnectionString)

Mic*_*ail 3 c# sql-server entity-framework

我想使用构造函数进行数据库连接

DbContext(string nameOrConnectionString)

但我不想使用应用程序配置文件.像这样

配置文件中的行

  <add name="DBEntities" connectionString="metadata=res://*/DB.csdl|
    res://*/DB.ssdl|res://*/DB.msl;provider=System.Data.SqlClient;
    provider connection string=&quot;data source=SERVER;
    initialcatalog=DB;persist security info=True;
    user id=XXX;password=YYY;MultipleActiveResultSets=True;
    App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

和代码行

public DBEntities() : base("name=DBEntities"){}
Run Code Online (Sandbox Code Playgroud)

我想直接在代码中想要这样的东西

 public DBEntities() : base("connectionString=metadata=
 res://*/DB.csdl|res://*/DB.ssdl|res://*/DB.msl;
 provider=System.Data.SqlClient;provider connection string=&quot;
 data source=SERVER;initial catalog=DB;
persist security info=True;
userid=XXX;password=YYY;MultipleActiveResultSets=True;
App=EntityFramework&quot;"){}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我有'System.ArgumentException':不支持关键字:'connectionstring'.

有可能的?怎么做我想要的?

Njå*_*ark 7

这个问题似乎有两个方面:

  1. 您已connectionString在连接字符串中包含属性名称
  2. "需要替换为'

那么正确的代码应该变成:

public DBEntities()
    : base("metadata=res://*/DB.csdl|res://*/DB.ssdl|res://*/DB.msl;provider=System.Data.Sq????lClient;provider connection string='data source=SERVER;initial catalog=DB;persist security info=True;userid=XXX;password=YYY;MultipleActiveResultSets=True;App=EntityFramew????ork'")
{}
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看连接字符串所包含的元素的更多详细信息,此处了解有关实体框架连接字符串的更多详细信息.

旧的anwers,供参考:

问题似乎是你包含web.config用来定义连接字符串的所有内容.在您的情况下,连接字符串本身只是在属性connectionString之后的引号之间包含的内容data source=SERVER;initial catalog=DB;persist security info=True;userid=XXX;password=YYY;MultipleActiveResultSets=True;App=EntityFramework.

试试这个:

public DBEntities() : base("data source=SERVER;initial catalog=DB;
  persist security info=True;
  userid=XXX;password=YYY;MultipleActiveResultSets=True;
  App=EntityFramework"){}
Run Code Online (Sandbox Code Playgroud)

此外,您可以在此处查看连接字符串所包含的元素的更多详细信息.