EntityFramework 6 Configuração baseada em código da cadeia de conexão para o banco de dados primeiro
Estou tentando fazer com que um aplicativo existente funcione sem um app.config (é necessário devido a um ambiente muito específico). O problema é que ele depende muito do EntityFramework 6 para trabalhar com um SQL-Server.
Estou tentando usar umconfiguração baseada em código, mas não consigo descobrir como fornecer uma cadeia de conexão correta através da minha classe de configuração.
Eu fiz uma classe de configuração:
public class MyConfiguration : DbConfiguration
{
public MyConfiguration()
{
SetDefaultConnectionFactory(new MyConnectionFactory());
SetProviderServices("System.Data.SqlClient", System.Data.Entity.SqlServer.SqlProviderServices.Instance);
}
}
Em seguida, forneci-o ao meu DbContext (gerado pelo EF automaticamente a partir do BD):
[DbConfigurationType(typeof(MyConfiguration))]
public partial class TestModelEntities
{
}
Com um connection factory personalizado:
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;
}
}
Contudo. Quando eu testo, recebo umaUnintentionalCodeFirstException
. Por quê? o que estou perdendo?