我一直在使用Entity Framework 4.3操作现有数据库,并且有几个情况需要考虑。
首先,如果我删除我的数据库,我希望EF可以从头开始重新创建 - 我已经成功使用了CreateDatabaseIfNotExists数据库初始化器。
其次,如果我更新模型并且数据库已经存在,则希望自动更新数据库 - 我已经成功使用了Entity Framework 4.3迁移。
那么这里是我的问题。假设我向模型中添加一个需要一些引用数据的新表,最好的方法是什么,以确保在数据库初始化器运行时和迁移运行时都创建此数据。我希望在从头创建数据库时创建数据,并在由迁移运行导致的数据库更新时也创建数据。
在一些EF迁移示例中,我看到人们在迁移的UP方法中使用SQL()函数来创建种子数据,但如果可能的话,我宁愿使用上下文来创建种子数据(正如您在大多数数据库初始化器示例中看到的)。因为EF的整个理念就是将SQL抽象化,所以在这里使用纯SQL似乎很奇怪。我尝试在UP方法中使用上下文,但是由于某种原因,当我尝试在调用创建表的语句之后直接添加种子数据时,它无法确定在迁移中创建的表是否存在。
非常感谢您的帮助。