2013-03-30 54 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) {} } 給它一展身手。 –

相關問題