使用SqlCeBulkCopy进行实体框架播种返回错误

本文关键字:返回 错误 框架 实体 SqlCeBulkCopy 使用 | 更新日期: 2023-09-27 17:54:19

我正在尝试用~50K条目播种我的数据库。我有两个数据库。50K条目将通过对database2 (database2,基于数据库优先方法)的一些查询/计算生成,然后插入到database1 (database1,基于代码优先方法)中。这个过程相对较慢,即使有定期提交和上下文重建的提示(见这里)。

备注:我知道我可以使用一些SQL结构将所需的数据从Database2直接复制到Database1,但是实体的创建有点复杂(排除,随机生成等),SQL结构将非常复杂,如果可能的话,我认为。因此绕道EF.

所以我尝试使用SqlCeBulkCopy(见这里)像这样:

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);
            }
        }
    }
}

连接字符串如下:

& lt;添加名称="MyDatabase"connectionString="数据源=PC'SQLSERVER;初始目录=数据库;集成安全=True;池=False;MultipleActiveResultSets=True;providerName ="System.Data.SqlClient"/在

& lt;添加名称="MyDatabase2"connectionString="metadata=res:///Initializers.DataModel.csdl|res:///Initializers.DataModel.ssdl|res://*/Initializers.DataModel.msl;provider= "数据源=PC'SQLSERVER;初始目录=Database2;集成安全=True;MultipleActiveResultSets=True;App=EntityFramework"providerName ="System.Data.EntityClient"/在

问题是我得到了一个"System.ArgumentException"在EntityFramework.dll中,由于关键词"初始目录";不支持。因此,连接字符串MyDatabase中初始目录关键字似乎存在问题,但我不知道出了什么问题。什么好主意吗?

使用SqlCeBulkCopy进行实体框架播种返回错误

使用SqlBulkCopy(内置System.Data.SqlClient的一部分)而不是SqlCeBulkCopy。SqlCeBulkCopy只适用于填充SQL Server Compact数据库文件