gpt4 book ai didi

C# - Entity Framework - 大型种子数据代码优先

转载 作者:行者123 更新时间:2023-11-30 22:01:36 24 4
gpt4 key购买 nike

我将在我的应用程序中创建一个初始表来存储我所在国家/地区的所有城市/州。这是一个相对较大的数据集:5k+ registries。

阅读 this post启发了我一个执行此操作的好方法,尽管我认为将由 EF 导入的 sql 文件公开是一个安全漏洞。

文件格式无关紧要:如果我愿意,我可以将其制作成 XLS 或 TXT;我可以简单地将它作为流读取并生成对象,而不是像帖子中那样将其作为 SQL 命令执行,并生成对象,如下一个 hiperlink 的教程所示。

阅读 this tutorial关于code-first中的数据种子,我看到seed方法会在数据库初始化过程中执行,种子对象是在seed方法中生成的。

我的问题:关于种子方法,最好的方法是什么,SQL 文件方法还是对象方法?我个人认为对象方法更安全,但可能更慢,这可能会产生我的第二个问题:在数据库初始化过程中执行的种子方法在创建数据库时执行?这对我来说有点不清楚。

谢谢。

最佳答案

  1. 在您的数据库项目中引用System.Data 并添加NuGet 包EntityFramework.BulkInsert .

  2. 如果您检测到您的数据还不存在,请将您的数据插入到种子方法中:

    protected override void Seed(BulkEntities context)
    {
    if (!context.BulkItems.Any())
    {
    var items = Enumerable.Range(0, 100000)
    .Select(s => new BulkItem
    {
    Name = s.ToString(),
    Status = "asdf"
    });

    context.BulkInsert(items, 1000);
    }
    }

在这里插入 100,000 个项目大约需要 3 秒。

关于C# - Entity Framework - 大型种子数据代码优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com