1
我在應用程序的某處有以下代碼。代碼是這樣的:動態創建連接字符串EF6.0導致問題
Hyperion.Data.MCQEntities _model = null;
const string K_MODEL = @"res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;";
public Engine(string cnnstr)
{
//string connection =(new ConnectionStringBuilder(cnnstr)).ToString();
string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder
{
Metadata = K_MODEL, //"res://*",
Provider = "System.Data.SqlClient",
ProviderConnectionString = cnnstr,
}.ConnectionString;
_model = new Data.MCQEntities(connectionString);
_model.Connection.Open();
}
我不明白的問題是,當我使用Metadata = "res://*"
它的工作原理,但是當我使用Metadata=K_MODEL
不會在所有的工作。可能是什麼問題?
你是否仔細檢查過你的'K_MODEL'值是否正確?我的連接字符串元數據似乎遵循以下模式:'res:// */Entity。{0} .csdl | res:// */Entity。{0} .ssdl | res:// */Entity。{0} .msl' – StriplingWarrior
檢查了很多次。我的工作沒有被卡住,我已經在使用其他可行的表單了。我只是想知道爲什麼它的行爲如此呢?像某些人所建議的那樣,刪除模型並重新創建並不是一個解決方案。資源被嵌入,如果他們不是那麼res:// *永遠不會工作。並且我也確認了型號文件名和loc。幕後發生了什麼? –
我不知道所有這些在幕後工作。如果您在配置文件中使用相同的連接字符串,而不是注入它,它會工作嗎?你可能要仔細檢查一下你的構造函數沒有被改變來做一些黑魔法。 – StriplingWarrior