我正在尝试初始化一个实体对象(ADO.NET EF 对象),但它不允许我选择要使用的连接字符串。我需要更改连接字符串以便为用户提供不同的访问级别。
实体对象中没有覆盖,只是一个无参数的构造函数。
如果有人可以给我任何指示,不胜感激。
我正在尝试初始化一个实体对象(ADO.NET EF 对象),但它不允许我选择要使用的连接字符串。我需要更改连接字符串以便为用户提供不同的访问级别。
实体对象中没有覆盖,只是一个无参数的构造函数。
如果有人可以给我任何指示,不胜感激。
如果您使用设计器为您生成.edmx文件,您将获得如下内容:
public MyEntities() : base("name=MyEntities", "MyEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
默认情况下,这将从您的配置文件中获取连接字符串。
在这种情况下你可以做的是设置连接字符串
public partial class MyEntities
{
partial void OnContextCreated()
{
//Dynamically Building a Connection String
this.Connection.ConnectionString = "myconnectionstring";
}
}
请记住,这将首先使用基本构造函数从配置中提取连接字符串,然后使用您的自定义版本进行设置,基本上覆盖连接字符串。当您总是需要默认连接字符串时,这通常很好。
如果您想要更多控制权,另一种选择是通过构造函数传递连接字符串,如下所示:
public partial class MyEntities
{
public MyEntities(string connectionString) :
base(connectionString,"MyEntities")
{
this.OnContextCreated();
}
}
现在您将连接字符串向下传递到基类,这是它将使用的唯一一个。但是,这确实意味着您通常每次都需要提供此信息。
希望这可以帮助...