“Clonación” de EntityConnections y ObjectContexts en Entity Framework

(Esto solía ser una pregunta de dos partes, pero como la segunda parte es literalmente la más importante, decidí dividir esto en dos publicaciones separadas.VerUso de la serialización para copiar entidades entre dos ObjectContexts en Entity Framework para la segunda parte.

Quiero crear un "clonador" bastante genérico de bases de datos para mi modelo de entidad. Además, es posible que tenga que apoyar a diferentes proveedores y demás. Estoy usandoObjectContext API.

Estoy consciente deesta pregunta ya y elDocumentación de EntityConnectionStringBuilder MDSN ejemplo, pero necesito saber si hay una manera programática de obtener los valores para inicializar elProvider yMetadata propiedades de unEntityConnectionStringBuilder?

using (var sourceContext = new EntityContext()) {
    var sourceConnection = (EntityConnection) sourceContext.Connection;
    var targetConnectionBuilder = new EntityConnectionStringBuilder();

    targetConnectionBuilder.ProviderConnectionString = GetTargetConnectionString();
    targetConnectionBuilder.Provider = "System.Data.SqlClient"; // want code
    targetConnectionBuilder.Metadata = "res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl"; // want code

    using (var targetContext = new EntityContext(targetConnectionBuilder.ConnectionString)) {
        if (!targetContext.DatabaseExists())
            targetContext.CreateDatabase();

        // how to copy all data from the source DB to the target DB???
    }
}

Es decir, ¿hay una manera de buscar el

"System.Data.SqlClient""res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl"

¿De algún lugar y no usar valores literales?

Respuestas a la pregunta(1)

Su respuesta a la pregunta