Entity Framework Object不允许将Connection String作为参数传递

时间:2013-03-30 11:47:18

标签: entity-framework connection-string

我正在尝试初始化一个Entity对象(ADO.NET EF对象),但它不允许我选择我想要使用的连接字符串。我需要更改连接字符串,以便为用户提供不同的访问级别。

实体对象中没有覆盖,只是一个无参数构造函数。

如果有人能给我任何指示,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您已经使用设计器为您生成 .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";          
    }
   } 

请记住,这将首先使用基本构造函数从config中提取连接字符串,然后使用您的自定义版本设置它,基本上覆盖连接字符串。当您总是需要默认连接字符串时,这通常很好。

如果你想要更多控制,另一个选择是通过构造函数传递连接字符串,如下所示:

    public partial class MyEntities
    {   
     public MyEntities(string connectionString) :           
     base(connectionString,"MyEntities")       
     {

       this.OnContextCreated();       
    }
   }

现在您将连接字符串传递给基类,这是它将使用的唯一字符串。但这确实意味着您每次都需要提供此服务。

希望这会有所帮助......