«Клонирование» EntityConnections и ObjectContexts в Entity Framework

(Раньше это был вопрос, состоящий из двух частей, но поскольку вторая часть буквально важная, я решил разделить ее на два отдельных поста.УвидетьИспользование Сериализации для копирования сущностей между двумя ObjectContexts в Entity Framework для второй части.

Я хочу создать довольно универсальныйCloner» баз данных для моей модели сущности. Также мне может понадобиться поддержка разных провайдеров и тому подобное. Я'м используюObjectContext API.

Я в курсеэтот вопрос уже иEntityConnectionStringBuilder MDSN документация пример, но мне нужно знать, есть ли программный способ получить значения для инициализацииProvider а такжеMetadata свойства?EntityConnectionStringBuilder

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

То есть есть ли способ получить

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

откуда и не использовать литеральные значения?

Ответы на вопрос(1)

Ваш ответ на вопрос