3
我是新來EF使用EF4數據庫第一代和發生。 我必須將連接字符串置於與app.config不同的配置中。實體框架4是否有可能從另一個文件而不是app.config讀取連接字符串?
我該怎麼辦?我怎樣才能繞過它?
我有一個分部類MyTextContext 的,我有這樣的
public static string GenerateConnectionString()
{
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
// Set the properties for the data source.
sqlBuilder.DataSource = dbServer;
sqlBuilder.InitialCatalog = dbName;
sqlBuilder.UserID = "YOUR_USERNAME";
sqlBuilder.Password = "YOUR_PASSWORD";
sqlBuilder.IntegratedSecurity = false;
// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();
// Initialize the EntityConnectionStringBuilder.
var entityBuilder = new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = "System.Data.SqlClient";
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/myTestModel.csdl|
res://*/myTestModel.ssdl|
res://*/myTestModel.msl";
return entityBuilder.ToString();
}
的方法我已經注意到,我的EFModel.designer具有這樣的構造:
/// <summary>
/// Initializes a new MyTestContext object using the connection string found in the 'MyTestContext' section of the application configuration file.
/// </summary>
public MyTestContext() : base("name=MyTestContext", "MyTestContext")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Initialize a new MyTestContext object.
/// </summary>
public MyTestContext(string connectionString) : base(connectionString, "MyTestContext")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Initialize a new MyTestContext object.
/// </summary>
public MyTestContext(EntityConnection connection) : base(connection, "MyTestContext")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
我怎樣才能使用我的「GenerateConnectionString」而不是EF從app.config讀取?
感謝您的任何建議
這是我第一次參加EF,最後我也會手工製作。但是我在辦公室新建了一些東西,他們告訴我要用EF來做。沒有人知道怎麼做。你提到嘗試第二種超載。在哪裏應該代碼去了嗎?在我的部分課堂上?或者在課堂上調用上下文。 – user9969 2010-11-11 11:10:12
我已經使用ctx = new MyTextContext(GenerateConnectionString()),但無法找到我的方法事件雖然是在部分類 – user9969 2010-11-11 11:13:21
找不到方法?是相同的命名空間?如果您遺漏了部分關鍵字,是否會導致部分類錯誤?你能發佈你的部分類和代碼生成的設計器文件的命名空間/類聲明嗎?另一個選擇是創建一個派生自MyTextContext的類,並將'GenerateConnectionString'邏輯放在該類中,因此派生類的Ctor可以是'public MyDerivedTextContext():base(GenerateConnectionString())' – RPM1984 2010-11-11 11:45:25