【问题标题】:How to create an EF Code First implementation via Reverse Engineering of an existing DB?如何通过现有数据库的逆向工程创建 EF Code First 实现?
【发布时间】:2017-04-10 19:16:57
【问题描述】:

我已经运行 EF 5 的 Code First 原型实现大约一年了,但现在管理层同意了,是时候将原型应用到整个数据库了。

当我第一次对 Code First 项目进行编码时,我使用 EF Powertools 对 Code First 项目进行逆向工程。这给了我一个上下文,然后我更新了它,每个表都有大量的 POCO 类,每个实体都有一个 Map 类。

这仍然是创建 Code First 实现的最佳方式吗?

我读到here,我也可以通过DbContext Generator 生成代码优先模型,但是当我尝试这个时,似乎我必须从现有数据库中创建一个新的*.edmx 文件,我可以从中然后使用 DbContext 生成器。

但是,当我在这里执行第一步并创建 *.edmx 文件时,我可以看到 POCO 类和正在生成的上下文。我需要DbContext Generator 吗?我的意思是这会带来什么我还没有的东西?

据我所见,地图文件并未生成,而是之前保存在该文件中的数据现在是 Entities.Designer.cs 文件的一部分,但现在有更多代码用于处理对象更改等。

[编辑] 任何人都可以举例说明在对现有数据库进行逆向工程时应该如何构建 Code First 实现吗?

如果有帮助,我正在使用 EF6 并使用 ODAC v11.2 连接到 Oracle 数据库。

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    我创建实体如下:

    public class Customer
    {
        [Key]
        public int ID{get;set;}
    
        public string Name{get;set;}
    
        public string GroupName{get;set;}
    
        public CustomerGroup Group{get;set;}
    }
    
    public class CustomerGroup
    {
        [Key]
        public int ID{get;set;}
    
        public string Name{get;set;}
    
        public List<Customer> Groups{get;set;}
    }
    

    那么你需要一个继承自 DB 上下文的上下文

    public class Context : DbContext
    {
        public DbSet<Customer> Customers{get;set;}
        public DbSet<CustomerGroup> Groups{get;set;}
    }
    

    如果您在 App.Config 中有一个带有上下文类名称的连接字符串,您可以实例化上下文,它应该在连接字符串中给定的位置创建一个具有给定实体的数据库。

    【讨论】:

      【解决方案2】:

      看看这些链接,它们肯定会对你有所帮助:)

      Oracle odp and entity

      还有一些在这个网站上。

      An answered error

      还有这个

      SaveChanges error help

      我从未使用过 oracle,但我可以先编写实体框架代码,所以请看看它们。

      干杯!

      【讨论】:

        【解决方案3】:

        请关注我的 github 项目。我已经实现了代码优先、工作单元和存储库模式。您可以将其用作启动项目。

        https://github.com/erandika1986/CodeFirst

        谢谢, 厄兰蒂卡

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-08
          相关资源
          最近更新 更多