【问题标题】:Entity Framework code first around existing database实体框架代码首先围绕现有数据库
【发布时间】: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


【解决方案1】:

您可以使用EntityFramework Reverse POCO Code First Generator

对现有数据库进行逆向工程并生成实体框架 Code First Poco 类、配置映射和 DbContext。 这个生成器被设计成可定制的 开始,而不是像其他发电机那样固定和僵化。去玩 使用 .tt 文件中的设置,这就是它的存在 为。

这里是链接:EntityFramework Reverse POCO Generator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多