逆向工程实体框架的表子集

Kja*_*tan 14 entity-framework reverse-engineering ef-code-first visual-studio-2012

我正在使用EF,我已经获得了Entity Framework Power Tools扩展,它允许我根据给定数据库中的表对类进行逆向工程.

我们有一个相当广泛的数据库,有很多表我不需要代表.有没有简单的方法来选择这些的子集,只对那些进行反向工程?

Sim*_*hes 10

如果您的数据库是SQL Server或SQL Server CE 4.0,那么您可以使用visualstudiogallery.msdn.microsoft.com上提供的"Entity Framework Reverse POCO Generator".

它通过使用表过滤TableFilterExclude,TableFilterInclude.

过滤器的工作方式如下:

  1. 阅读架构
  2. 删除与排除过滤器匹配的所有表(如果存在).
  3. 包括与包含过滤器匹配的任何表(如果存在).

例:

TableFilterExclude = new Regex("billing|report");
TableFilterInclude = new Regex("company");
Run Code Online (Sandbox Code Playgroud)

给出以下表格:

  • some_table
  • 公司
  • company_billing_annual
  • company_billing_ledger
  • company_reports
  • company_events
  • another_table.

将立即排除名称中包含结算或报告的任何表格.包含名称中包含公司的任何表格.

你留下:

  • 公司
  • company_events


Kja*_*tan 9

我发现了一个有效的解决方案,但需要一些"额外"步骤:

在项目中,右键单击并选择Add- > new Item.选择Data左侧和ADO.NET Entity Data Model项目列表.

从现在显示的对话框/向导中,您可以选择一个DB来生成模型,在这种情况下,您只能选择所需的表,视图和存储的过程和函数.

添加模型后,您可以在解决方案资源管理器中展开它,您应该在YourModelName.edmx- > 下找到所需的类YourModelName.tt

注意:您将无法拖放源文件,但您可以右键单击并选择copy class.然后,您可以将它们粘贴到您需要的位置,并且它们的名称后面会显示"1".因此,您需要进行一些轻量级重构(更改文件名,类和命名空间),但它仍然相当容易.

现在您可以删除原始模型(edmx文件)及其下的所有内容.

如果你有很多不必要的表,视图等,那么这不是一个完美的解决方案,但仍然比生成大量的表格表示(并等待VS完成工作!)更容易.