【发布时间】:2015-08-22 13:14:55
【问题描述】:
我正在尝试为我的数据库添加约 50K 条目。我有两个数据库。 50K 条目将由 database2(Database2,基于 Database first 方法)上的一些查询/计算生成,然后将插入 database1(Database1,基于 code first 方法)。该过程相对较慢,即使有定期提交和上下文重新创建的提示(请参阅here)。
备注:我知道我可以使用一些 SQL 构造将所需数据从 Database2 直接复制到 Database1,但是实体的创建有点复杂(排除、随机生成等)和 SQL 构造如果可能的话,我认为会非常复杂。因此绕道EF。
所以我尝试像这样使用 SqlCeBulkCopy(参见 here):
public class DropCreateDatabaseAlwaysWithSeedData : DropCreateDatabaseAlways<MyContext>
{
protected override void Seed(MyContext context)
{
using (var context2 = new MyContext2())
{
var testList = new List<MyEntity>();
for (var i=0; i < 50000; i++)
{
// Some queries on context2 and calculations to get data
testList.Add(new MyEntity());
}
using (var bcp = new SqlCeBulkCopy(context.Database.Connection.ConnectionString))
{
bcp.DestinationTableName = "MyEntity";
bcp.WriteToServer(testList);
}
}
}
}
连接字符串如下:
/Initializers.DataModel.csdl|res:///Initializers.DataModel.ssdl|res://*/ Initializers.DataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=PC\SQLSERVER;initial catalog=Database2;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System. Data.EntityClient" />
问题是我在 EntityFramework.dll 中得到“System.ArgumentException”,因为不支持关键字“初始目录”。因此,连接字符串 MyDatabase 中的初始目录关键字似乎存在问题,但我不知道出了什么问题。有什么想法吗?
【问题讨论】:
标签: c# sql-server entity-framework sql-server-ce connection-string