【问题标题】:EF Reverse POCO against a SQL Database Project?针对 SQL 数据库项目的 EF 反向 POCO?
【发布时间】:2015-05-12 00:21:04
【问题描述】:

我可以直接针对 SQL 数据库项目使用 EF Reverse POCO 生成器吗?

我将我的 SQL 数据库定义保存在“Visual Studio SQL 数据库项目”中,这为我提供了一些不错的版本控制功能、架构比较和一些漂亮的部署功能。有时我在开发过程中从临时数据库更新项目文件,但版本控制的项目始终是任何版本的“真相”。

如果我使用EntityFramework Reverse POCO Code First Generator,我是否需要通过实际的 SQL 数据库来回我的“真相”来生成 POCO?或者我可以对 VS 数据库项目使用 POCO 生成器吗?

我知道数据库项目的模式在各种 VS 数据库交互中都有一种元存在。例如,它在 SQL Server 对象资源管理器中显示一个真实的数据库图标。但我不知道代码优先生成器是否可以/确实利用类似的功能来查询元数据。

【问题讨论】:

  • 目前(VS 2013)这是不可能的。顺便说一句,这个问题是在以下链接中提出的,尽管还没有任何有用的答案:stackoverflow.com/questions/19392636/…
  • 谢谢基思。当然,您提到的问题与我希望使用的工具没有直接关系,它已经非常接近解决方案。我认为线程中甚至没有提到该工具,除非它是 EF Power Tools 的一部分(我不认为它是)。所以我想知道,你具体知道反向POCO生成器没有那个能力吗?
  • 正确,它目前没有这个能力。不过,这将是一个很棒的功能!

标签: sql-server entity-framework ef-code-first poco database-project


【解决方案1】:

在 GitHub 上有一个名为 SqlSharpener 的项目可作为 NuGet 包使用。

说明:

解析 SQL 文件以创建元对象层次结构,您可以使用该层次结构 生成 C# 代码,例如存储过程包装器或实体框架 代码优先实体。手动生成或通过调用其中一个生成 包含的预编译 T4 模板。

而不是从数据库生成代码或使用繁重的 可能会遗漏数据库和数据库之间差异的抽象层 数据访问层直到运行时,这个项目旨在提供一个非常 在设计时生成的快速简单的数据访问层 使用 SQL 文件作为事实来源(例如那些在 SSDT 中发现的文件) 项目)。

我不能保证它,因为我从未使用过它,但它看起来很有希望。

【讨论】:

  • 很棒的发现,谢谢基思。我会在接下来的几天里调查它并在这里回复。
  • 我还应该提到,在一些公开讨论之后,我从 Rowan Miller 那里得到了印象,MS 正在考虑将这个功能添加到 VS 2015。
  • @shannon,我是 SqlSharpener 的创建者。您绝对应该能够使用它来完成您所要求的事情。我在example solution 中添加了一个T4 template,您可以使用它来生成您的实体。如果有未涵盖的用例,请随时create an issue,我会看看我是否可以解释它。
【解决方案2】:

对于EntityFramework Reverse POCO Code First Generator,您需要往返于实际的 SQL 数据库以生成代码优先代码,因为您无法针对 VS 数据库项目使用生成器。

【讨论】:

    猜你喜欢
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多