实体数据模型(.edmx 文件)是否与 ORM 无关?
使用 NHibernate 几年后,我现在正在学习实体框架,以便在我的下一个项目中使用。目前,我正在尝试在代码优先或模型优先方法之间做出决定。模型优先的方法对我很有吸引力,但结果必须与 ORM 无关。为此,我思考以下几点。创建从 .edmx 文件的 CSDL 和 CS 映射内容生成类和 .hbm.xml 文件(与 NHibernate 一起使用)的 T4 模板是否可能且实用?
After having used NHibernate for several years, I am now learning Entity Framework for use on my next project. At the moment, I am trying to decide between the code-first or model-first approaches. The model-first approach appeals to me, but the result would have to be ORM-agnostic. To this end, I am pondering the following. Would it be possible and practical to create T4 templates that generate classes and .hbm.xml files (for use with NHibernate) from the CSDL and C-S mapping content of a .edmx file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没有映射是 ORM 不可知的,因为它是 ORM API 的一部分,或者您是否看到使用 NHibernate 的 hbm 文件的实体框架? EDMX 是 EDM(实体数据模型)的 XML 表示形式,EDM 是 MS 资产,主要用于 MS API。此外,并非 MS 提供的所有用于 EDM 处理的 API 都是可访问的(内部实现)。 EDMX 与 ORM 无关。更糟糕的是,它甚至与数据库无关。
无论如何,您可以创建任何自定义工具或转换,将 EDMX 作为输入并提供其他映射作为输出。您只需要了解输入和输出格式。我不确定 T4 是否可以直接实现,但绝对是可能的。但这并不实用。实用的是充分利用单个 ORM 并使用可用于该 ORM 的工具。
No mapping is ORM agnostic because it is part of that ORM API or did you see Entity framework using NHibernate's hbm files? EDMX is XML representation of EDM (Entity Data Model) which is MS asset and it is mainly used for MS APIs. Moreover not all API for EDM processing provided by MS is accessible (internal implementation). EDMX is not ORM agnostic. The worse part is that it is even not database agnostic.
Anyway you can create any custom tool or transformation taking EDMX as input and providing other mapping as output. You just need to understand input and output format. I'm not sure if it will directly be possible with T4 but it is definitely possible. But it will not be practial. Practical is using single ORM to its full power and use tools available for that ORM.
创建从 .edmx 文件生成 Fluent NHibernate 类的 T4 模板是可能且实用的。我正在参与 AMD 的一个项目,我们就是这么做的。 (我本人不是作者。)请参阅: http://tom-jaeschke.blogspot.com/2011/08/use-entity-framework-and-nhibernate.html
It is possible and practical to create T4 templates that generate classes for Fluent NHibernate from an .edmx file. I am on a project at AMD where we are doing just that. (I am not the author myself.) See: http://tom-jaeschke.blogspot.com/2011/08/use-entity-framework-and-nhibernate.html