我在C#应用程序中使用Entity Framework 6,它运行得很好。创建Model时,将生成app.config并具有所有必需的配置。现在我不喜欢app.config中的东西,所以我使用连接字符串构建器。我成功地从app.config文件中删除了除此之外的所有内容:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
如果我删除它,它不起作用。那么如何将该配置转换为c#代码? 我该怎么办?我查看了基于代码的配置(http://msdn.microsoft.com/en-us/data/jj680699)但是,它没有帮助。
我创建连接字符串的部分类看起来像这样:
public partial class LogEntities
{
public LogEntities(string serverName)
: base(GetConnectionString(serverName))
{
}
public static string GetConnectionString(string serverName)
{
// Specify the provider name, server and database.
const string databaseName = "_LOG";
// Initialize the connection string builder for the underlying provider.
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder
{
DataSource = serverName,
InitialCatalog = databaseName,
IntegratedSecurity = true,
MultipleActiveResultSets = true
};
// Initialize the EntityConnectionStringBuilder.
System.Data.EntityClient.EntityConnectionStringBuilder entityBuilder = new System.Data.EntityClient.EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/myproject.LogModel.csdl|res://*/myproject.LogModel.ssdl|res://*/myproject.LogModel.msl";
return entityBuilder.ConnectionString;
}
}
提前感谢您的帮助。
答案 0 :(得分:13)
在EF6中,您可以使用代码库配置。有关详细信息,请查看this文章。它显示了如何设置默认连接工厂(使用SetDefaultConnectionFactory
方法)。要设置提供程序,请使用SetProviderServices
方法。