我希望在我们的系统中实现 ORM。我们目前有许多表,其中有大量可怕的数据和存储过程。我听说使用 ORM 会降低系统速度。有谁知道哪种 ORM 使用 C# 代码中创建的查询并映射到存储过程在速度和性能方面更好?
Thanks
EDIT:
该项目将使用现有的大型且包含大量数据的表,还将使用在 SQL Server 数据库中执行复杂任务的现有存储过程。 ORM必须能够执行事务,并且在运行现有存储过程和查询当前表时具有高性能。该项目基于 Web,并将使用 WCF Web 服务和 DDD。我可以看到 EF 更容易使用并且有更好的支持,但是 NH 是否是最合适的选择?
检查这篇文章 https://www.devbridge.com/articles/entity-framework-6-vs-nhibernate-4/NH 相对于 EF 的一些优势
- NH有10+种id生成策略(IDENTITY、sequence、HiLo、manual、increment、几个GUID等),EF只有manual或者SQL Server的IDENTITY;
- NH 有惰性属性支持(注意:不是实体,这是针对字符串、XML 等属性),EF 没有;
- NH 有二级缓存支持(相信我,企业开发人员正在使用它),而 EF 没有;
- NH 支持自定义类型,甚至是复杂的,具有“虚拟”属性,其中包括查询这些虚拟属性,而 EF 则不支持;
- NH有公式属性,可以是任意SQL,EF没有;
- NH 有实体和集合的自动过滤器,EF 没有;
- NH 支持基本类型(字符串、整数等)以及组件(没有标识的复杂类型)的集合,而 EF 不支持;
- NH支持6种集合(list、set、bag、map、array、id数组),EF只支持一种;
- NH 包含一个代理生成器,可用于自定义生成的代理,EF 不允许这样做;
- NH 有 3 个映射选项(.HBM.XML、按代码、按属性),而 EF 只有两个(按属性、按代码);
- NH 允许查询和插入批处理(这是因为 EF 仅真正支持 IDENTITY 键),EF 则不允许;
- NH有几种乐观控制策略(db上的列,包括Oracle的ORA_ROWSCN、时间戳、整数版本、全部、脏列),EF只支持SQL Server的TIMESTAMP或全部
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)