2013-03-30 55 views
0

我想初始化一个实体对象(ADO.NET EF对象),但它不允许我选择我想要使用的连接字符串。我需要更改连接字符串,以便为用户提供不同的访问级别。实体框架对象不允许连接字符串作为参数传递

实体对象中没有重写,只是无参数的构造函数。

如果任何人都可以给我任何指针,很感激。

回答

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";   
    } 
    } 

请记住,虽然,这将首先使用基本构造拉从配置连接字符串,然后用您的自定义版本设置,基本上覆盖了连接字符串。当你总是想要一个默认的连接字符串时,这通常是很好的。

如果你想要更多的控制另一种选择,是通过在连接字符串中通过构造如下图所示:

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

     this.OnContextCreated();  
    } 
    } 

现在要传递的连接字符串中下降到基类,这是它将使用的唯一一个。不过这意味着你每次都需要提供这个。

希望这有助于...

+0

我跟着你的提示。开创了部分类一个新的文件,并添加以下代码:公共部分类实体 { 公共实体(字符串的connectionString): 基地(的connectionString) {} } 给它一展身手。 –

相关问题