休眠数据库优先
Posted
技术标签:
【中文标题】休眠数据库优先【英文标题】:Nhibernate Database First 【发布时间】:2016-08-02 10:36:02 【问题描述】:一开始我会告诉你,我对 Nhibernate 完全陌生,但我想知道如何将 Nhibernate 用于已经制作的数据库。数据库本身相当大(我在 CPU 上用来测试的部分是 1gb)。我不是通过 xml 映射的忠实粉丝。我认为这个工具可能对我有帮助 (https://www.devart.com/entitydeveloper/),但它的性能并不令人满意。那么我是否应该使用代码,然后将其与 XML 进行映射,或者我可以使用哪些其他可能的方式?
【问题讨论】:
【参考方案1】:我知道有两种选择:
Fluent NHibernate:流畅、无 XML、编译安全、自动化、基于约定的 NHibernate 映射 NHibernate.Mapping.Attributes:使用 NHibernate.Mapping.Attributes,您可以使用 .NET 属性来装饰您的实体,这些属性将用于生成映射信息【讨论】:
除了以上两个插件之外,NHibernate 还内置了对“Mapping-By-Code”的支持。不需要 XML。 我通过代码进行第二次映射。它与 xml 一样灵活,但意味着更快,因为在会话工厂启动时没有要解析的 xml 映射。如果我没记错的话,Fluent under the cover 会动态创建 xml,所以 sessionfactory 启动不会那么快。这里还有一个很好的通过代码和流利的映射资源notherdev.blogspot.com/2012/02/…【参考方案2】:除非您对NHibernate
有要求,否则我强烈推荐Dapper
,尤其是在您关心性能的情况下。对于CRUD
,您可以查看Dapper Contrib or Dapper Rainbow
。
Dapper Rainbow vs Dapper Contrib
Introduction to Dapper
【讨论】:
Dapper Contrib
或 Dapper Rainbow
可以从现有数据库生成模型吗?
Dapper 可能会更好,也可能不会——这实际上是基于意见的讨论,而不是 *** 问题的问题。但无论哪种方式,这个问题都是关于 NHibernate 的,所以这不是一个答案。以上是关于休眠数据库优先的主要内容,如果未能解决你的问题,请参考以下文章