【发布时间】:2016-09-09 15:08:24
【问题描述】:
我必须使用实体框架在新的或现有的数据库中创建一些新实体,这些实体需要与一些旧表交互,我想知道这里最好的方法是什么。我希望在迁移中使用 Code First。
例如,假设我有一个现有的填充 Person 表,我需要创建一个 Animal 表,其中将包含一个 PersonId 外键来引用现有人员。
据我所知,这些是我的选择:
- 使用代码优先迁移和 POCO 实体类创建带有
DBSet<Animal>的新DBContext(用于新数据库)。设置指向另一个数据库的外键时遇到问题。 -
使用
DBSet<Animal>创建一个新的DBContext(针对现有数据库),并围绕现有表创建某种 POCO 包装器。我不确定这是否可能 - 我尝试了类似的方法,但是在应用迁移时,EF 尝试创建Person表。我假设这将映射到现有表而不是创建一个新表:[Table("Person")] public class Person { 首先将数据库与现有数据库一起使用并在现有数据库中创建表,但随后我失去了使用 POCO 和迁移新实体的机会。
还有没有更好的选择,或者我应该先使用数据库吗?
【问题讨论】:
-
您通常可以使代码优先与现有数据库一起工作,因此我不会仅仅因为这个原因而切换到数据库优先。您只需要深入研究 EF 应用的建模约定(通常在
OnModelCreating事件中),以及对迁移脚本本身进行一些选择性手动编辑以适应已经存在的内容。您可以根据需要深入挖掘 EF,人们会定期这样做,以使其适用于各种情况。 -
我不知道数据库中的代码首先存在 - 看起来很理想
标签: c# entity-framework