2

我正在学习EF Code First。我读过Database Initialization Strategies in Code-FirstUnderstanding Database Initializers in Entity Framework Code First的文章。实体框架中的数据库初始化代码优先

但我仍然困惑,应该在初始化之前的数据应该在哪里?这些文章没有提到这一点,我认为这很重要。

我建立一个足球应用程序,所以在初始化程序,我想每支球队和球员的名字插入到数据库(从最好的联赛每在欧洲 - 使相当多的数据)。他们不会改变。它们是否应该在源代码中进行硬编码?或附加在XML?简单的文件?

现在我有:运行前,有初始化提示(请稍候,初始化...)我读取文件,逐行插入到数据库中。这是好方法吗?

回答

2

这取决于你在开发过程中的位置。您可以在创建数据库时运行的初始化程序上使用Seed() method。因此,如果您有大量数据,并且会经常使用DropCreate_____类型的初始化工具来更改模型 - 我建议您仅播种少量数据以进行测试。

当您对初始设计感到满意时,可以执行完整的Seed()并切换到数据库迁移来处理模型更改。这将保留您现有的数据,并拥有自己的用于新数据的Seed()方法。

至于从哪里得到的数据,你可以看看这样的事情,你可以从Web服务获取或下载到CSV,XML等http://www.jokecamp.com/blog/guide-to-football-and-soccer-data-and-apis/#footballdata或这里http://openfootball.github.io/

+0

什么是优势利用数据库初始化的我使用DropCreateDatabaseIfModelChanges以及如果我使用CreateDatabaseIfNotExists而不是? – AminM

+1

如果您正在进行大量模式更改并且没有接近部署,那么这很有意义。当事物处于设计模式时无需进行迁移。 –