我有一个 MVC 4 项目,并使用实体框架生成了所有模型类。然后我添加了一个类并将其命名为与“MyProjectEntities”类相同并使其成为部分类,以便我可以在该类中添加个性化方法。我在这个类中添加了一堆方法来查询数据库,它构建得很好。当我调用这些方法时,虽然我得到了 UnintentionalCodeFirstException。我不确定我做错了什么?
问问题
18318 次
2 回答
62
您需要提供正确的连接字符串。不仅仅是普通的“数据源=”类型字符串。
您将在配置文件中有一个以“metadata=”开头的连接字符串,使用那个。
于 2013-05-06T20:48:09.707 回答
10
您还可以将简单连接字符串转换为数据库优先连接字符串:
public static string BuildEntityConnectionStringFromAppSettings(string nameOfConnectionString)
{
var shortConnectionString = GetConnectionStringByName(nameOfConnectionString);
// Specify the provider name, server and database.
string providerName = "System.Data.SqlClient";
// Initialize the connection string builder for the
// underlying provider taking the short connection string.
SqlConnectionStringBuilder sqlBuilder =
new SqlConnectionStringBuilder(shortConnectionString);
// Set the properties for the data source.
sqlBuilder.IntegratedSecurity = false;
// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();
// Initialize the EntityConnectionStringBuilder.
EntityConnectionStringBuilder entityBuilder =
new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = providerName;
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
// Set the Metadata location.
entityBuilder.Metadata = String.Format("res://*/Application.{0}.Data.Model.{0}Model.csdl|res://*/Application.{0}.Data.Model.{0}Model.ssdl|res://*/Application.{0}.Data.Model.{0}Model.msl", nameOfConnectionString);
return entityBuilder.ToString();
}
背景:在我的项目中,有很多连接字符串,我们希望让它们保持简单和可比较。
于 2015-08-05T16:53:59.127 回答