【问题标题】:Custom ORM in .NET.NET 中的自定义 ORM
【发布时间】:2010-08-26 01:51:50
【问题描述】:

我只想调用数据库上的存储过程并根据结果填充我的 C# 对象。我只需要一个映射文件和一个像 CodePlex 上的 Fasterflect 这样的快速反射工具来创建我自己的 ORM。

对于 C# 的这些功能是否有任何可用的 ORM,具有闪电般的快速性能? 或者我应该怎么做才能在映射数据库对象方面完成上述场景??

【问题讨论】:

    标签: .net orm


    【解决方案1】:

    .NET ORM 有多种实现。

    框架已经有两个,Linq to Sql和Entity Framework。您要针对哪种类型的数据库?

    如果您正在寻找开源实现,请查看

    NHibernate

    除非您有足够的时间,否则我真的不会尝试自己构建一个!大多数 ORM 都有一个庞大的功能列表。

    我使用了来自Mindscape 的名为LightSpeed 的产品。它支持多个 rdbms,具有出色的设计器、出色的 linq 功能并提供出色的性能。

    【讨论】:

    • +1 同意;有像 NHibernate 或实体框架这样的现有 ORM 可以很好地调用存储过程;当已经有很棒的轮子时,不要重新创建轮子
    • NHibernate 和实体框架非常繁重但完整。有几个基准测试表明这些框架与 DataObject.NET 等其他可用框架相比性能较低
    • LightSpeed 很棒,该产品的性能部分正是我想要的,但我需要一个开源
    【解决方案2】:

    如果您需要快速读取性能,请使用 EF6.x 并确保您使用 AsNoTracking 并首先设置一些附加值。这将使其超快......但是对于它支持仅读取的价格,因此没有更改检测和数据更新。这将使 EF6x 比默认行为快 5 倍,请参阅 this

    还要确保使用数据库视图、索引来为所有选择增加额外的速度。但最好的建议是:始终检查从 ORM 层发送到数据库的代码,进行预加载,使用 IQuery 投影,...

    NHibernate 也是一个很好的工具。我将它用于我处理所有更改的域模型。

    还有我的另一篇文章,其中提到了人们在不正确地使用 ORM(不使用 Eager-load 等)时最常见的问题 - link。此外,通过分析或急切加载,您可以避免 N+1 选择,通过使用视图,您可以获得额外的速度...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2020-01-09
      • 2011-08-14
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      相关资源
      最近更新 更多