如何通过对现有数据库进行逆向工程创建 EF 代码优先实现

本文关键字:EF 创建 代码 实现 逆向工程 何通过 数据库 | 更新日期: 2023-09-27 18:37:18

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

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

这仍然是创建代码优先实现的最佳方式吗?

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

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

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

[编辑] 谁能举出任何例子,说明在对现有数据库进行逆向工程时应该如何构建代码优先实现?

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

如何通过对现有数据库进行逆向工程创建 EF 代码优先实现

我按如下方式创建实体:

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;}
}

然后,您需要一个从数据库上下文继承的上下文

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

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

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

甲骨文 ODP 和实体

以及本网站上的一些内容。

已回答的错误

而这个

保存更改错误帮助

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

干杯!

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

https://github.com/erandika1986/CodeFirst

谢谢埃兰迪卡