(这曾经是一个由两部分组成的问题,但由于第二部分确实很重要,因此我决定将其分成两个单独的帖子。请参阅使用序列化在实体框架中的两个 ObjectContexts 之间复制实体了解第二部分。
我想为我的实体模型创建一个相当通用的数据库“克隆”。此外,我可能需要支持不同的提供商等。我正在使用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"
从某个地方而不使用文字值?