EntityFramework 6 Codebasierte Konfiguration der Verbindungszeichenfolge für database-first

Ich versuche, eine vorhandene Anwendung ohne app.config zum Laufen zu bringen (dies ist aufgrund einer bestimmten Umgebung erforderlich). Das Problem ist, dass EntityFramework 6 für die Arbeit mit einem SQL-Server in hohem Maße erforderlich ist.

Ich versuche ein @ zu benutz Codebasierte Konfiguration, aber ich kann nicht herausfinden, wie ich über meine Konfigurationsklasse eine korrekte Verbindungszeichenfolge bereitstellen kann.

Ich habe eine Konfigurationsklasse erstellt:

public class MyConfiguration : DbConfiguration
{
    public MyConfiguration()
    {
        SetDefaultConnectionFactory(new MyConnectionFactory());
        SetProviderServices("System.Data.SqlClient", System.Data.Entity.SqlServer.SqlProviderServices.Instance);
    }
}

Dann stellte es meinem DbContext zur Verfügung (von EF automatisch aus bd generiert):

[DbConfigurationType(typeof(MyConfiguration))]
public partial class TestModelEntities
{           
}

Mit einer benutzerdefinierten Verbindungsfactory:

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;
    }
}

Jedoch. Wenn ich es teste, erhalte ich einUnintentionalCodeFirstException. Warum? Was vermisse ich

Antworten auf die Frage(4)

Ihre Antwort auf die Frage