1
我试图让一个现有的应用程序没有app.config(由于非常特定的环境,这是必需的)。问题在于它严重依赖于EntityFramework 6来处理SQL-Server。EntityFramework 6基于数据库的连接字符串的基于代码的配置优先
我试图利用code-based configuration,但我无法想象如何通过我的配置提供正确的连接字符串。
我做了一个配置类:
public class MyConfiguration : DbConfiguration
{
public MyConfiguration()
{
SetDefaultConnectionFactory(new MyConnectionFactory());
SetProviderServices("System.Data.SqlClient", System.Data.Entity.SqlServer.SqlProviderServices.Instance);
}
}
然后向它提供给我的DbContext(automaticaly从BD由EF生成):
[DbConfigurationType(typeof(MyConfiguration))]
public partial class TestModelEntities
{
}
使用自定义连接工厂:
public class MyConnectionFactory : IDbConnectionFactory
{
public DbConnection CreateConnection(string nameOrConnectionString)
{
var newConnStringBuilder = new SqlConnectionStringBuilder
{
UserID = "user",
Password = "pass",
InitialCatalog = "databaseName",
DataSource = "serverName"
};
var entityConnectionBuilder = new EntityConnectionStringBuilder
{
Provider = "System.Data.SqlClient",
ProviderConnectionString = newConnStringBuilder.ToString(),
Metadata = @"res://*/TestModel.csdl|
res://*/TestModel.ssdl|
res://*/TestModel.msl"
};
var newDbConnect = new EntityConnection(entityConnectionBuilder.ToString());
return newDbConnect;
}
}
但是,当我试图测试它时,我仍然收到UnintentionalCodeFirstException
。为什么?我错过了什么?
heh。令人惊讶的简单解决方案。谢谢! – user3223738