【问题标题】:Is entity data-model (.edmx files) ORM-agnostic?实体数据模型(.edmx 文件)是否与 ORM 无关?
【发布时间】:2012-02-15 19:35:31
【问题描述】:

在使用 NHibernate 几年后,我现在正在学习 Entity Framework 以用于我的下一个项目。目前,我正在尝试在代码优先或模型优先方法之间做出决定。模型优先的方法对我很有吸引力,但结果必须与 ORM 无关。为此,我正在思考以下几点。从 .edmx 文件的 CSDL 和 C-S 映射内容创建 T4 模板是否可行且实用?

【问题讨论】:

    标签: entity-framework nhibernate orm


    【解决方案1】:

    没有映射与 ORM 无关,因为它是 ORM API 的一部分,或者您是否看到使用 NHibernate 的 hbm 文件的实体框架? EDMX 是 EDM(实体数据模型)的 XML 表示,它是 MS 资产,主要用于 MS API。此外,并非所有 MS 提供的用于 EDM 处理的 API 都是可访问的(内部实现)。 EDMX 与 ORM 无关。更糟糕的是,它甚至与数据库无关。

    无论如何,您都可以创建以 EDMX 作为输入并提供其他映射作为输出的任何自定义工具或转换。您只需要了解输入和输出格式。我不确定 T4 是否可以直接实现,但绝对可以。但这将不实用。 Practical 正在充分利用单个 ORM 并使用可用于该 ORM 的工具。

    【讨论】:

    • 如果 EDMX 被简单地视为 XML 文件,那么它没有使用实体框架 API,对吗?我不会试图对 MS API 保持不可知论,因为这是整个 .NET。
    • 嗯,我的意思是 NHibernate 和其他 ORM 都不能使用 EDMX,所以它不是不可知的。它是 XML 并且您可以创建转换这一事实并没有改变它。我会很容易地编写一些 EDMX,因为它将使用包括 ESQL 查询在内的 EF 高级功能,因此无需付出巨大的努力就无法转换。所以恕我直言,考虑从 EDMX 到其他东西的任何转换都不值得。在大多数情况下,您会更快地手动创建这些 hbm 文件。
    • 还有哪些其他 ORM 不能使用这种方法,为什么不呢?您关于 ESQL 的观点很好。
    【解决方案2】:

    创建 T4 模板以从 .edmx 文件为 Fluent NHibernate 生成类是可行且实用的。我在 AMD 的一个项目中正在做这件事。 (本人不是作者。)见:http://tom-jaeschke.blogspot.com/2011/08/use-entity-framework-and-nhibernate.html

    【讨论】:

    • 有趣。我正在考虑做相反的事情的可能性 - 我有一个已建立的 NHibernate 层 (NHQueryable),我想为其生成一个 EDMX 等效项,以便我可以使用某些依赖于 MS EDM 的 API(例如 Microsoft .Data.OData.Query)。
    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多