«Клонирование» 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"
откуда и не использовать литеральные значения?