gpt4 book ai didi

c# - 如何使用 Entity Framework 将静态数据植入数据库?

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

如何在 Entity Framework 中创建(seed) 大量静态数据?静态数据是指位于数据库中但仅存在一次的数据。

例如在我的数据库中,我有一个 CountrySet,其中包含全局所有国家/地区。我希望这些国家/地区始终存在,但事实是,每次我清除数据库并为新部署重新创建它时,所有数据都会丢失。

在我的应用程序启动时创建所有内容(如果尚未创建)似乎对时间非常敏感。

我可以在这里做什么?

最佳答案

首先,让我问一下:

您是否熟悉在设置自己的 Initializer 时可以访问的 Seed 函数?

例子:

在你的主函数中写这样的东西:

System.Data.Entity.Database.SetInitializer(new SystemContext.SystemInitializer());

SystemContext 是您的 DbContext 类。

在那个类中你应该有这样的东西:

public class SystemContext : DbContext
{
public DbSet<Stock> Stocks { get; set; }
public DbSet<RawDayValues> StockRawValues { get; set; }

public SystemContext()
: base("Server=localhost;Database=test;Trusted_Connection=True;")
{ }

public class SystemInitializer : DropCreateDatabaseIfModelChanges<SystemContext>
{
#region SEED
// This is what you're looking for!
protected override void Seed(SystemContext context)
{
try
{
var stock = new Stock() { Symbol = "TEST" };
context.Stocks.Add(stock);
context.SaveChanges();
}
catch (Exception ex) { Console.Error.WriteLine(ex.Message); }
base.Seed(context);
}

#endregion
}
}

那只是我手头某个项目的一些模板代码。

如果您确实每次都重新创建数据库,那么我不知道有任何其他方法可以在不“手动”添加所有数据的情况下“播种”数据库。

另一方面,如果您打算在每次要更改数据库中的详细信息时删除数据库,您可能需要手动编写根据某种逻辑清除所有新数据的函数。

我希望这能回答您的问题:)

另外:您既没有在问题中说明,也没有在使用标签时说明您在谈论哪种技术。我假设它是 , .如果不是这种情况,请重新标记/指定。

祝你有美好的一天:)

关于c# - 如何使用 Entity Framework 将静态数据植入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10517094/

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