首页
学习
活动
专区
圈层
工具
发布

Entity Framework 和NHibernate的区别

而ADO.NET Entity Framework目前v1版本,应该是从下而上的方式Bottom-up),ADO.NET Entity Data Model Wizard就是最好的佐证。...Entity Framework v2支持POCO之后也就能实现垂直双方向的支持,但这如我后面所说,还不够。...同样仔细想想Entity Framework(也许NHibernate也是)在从外向里(Outside-in)方向也提供了支持,这也就是Dsimmons为代表的EF大佬经常说的,Entity Framework...,Entity Framework 似乎也是朝这个方向发展的,事实上,这也是比较可能和有效的发展思路--从这样角度来看EF现在的ORM/Mapping方面的不足也就容易理解了。...从上面的描述上可以很清楚的看出Entity Framework和NHibernate的区别,虽然他们都是ORM工具,他们在ORM的各个方向的侧重是不一样.

1.2K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Entity Framework 和NHibernate的区别

    而ADO.NET Entity Framework目前v1版本,应该是从下而上的方式Bottom-up),ADO.NET Entity Data Model Wizard就是最好的佐证。...Entity Framework v2支持POCO之后也就能实现垂直双方向的支持,但这如我后面所说,还不够。...其实ORM和DP的存在就是要实现这两个方向的能力和支持,否则就没有存在的必要,因为自上而下(Top-down)和自下而上(Bottom-up)两种方式由来已久,解决这两个方向的问题,ORM工具或E/R模型编程未必是最好的方式...同样仔细想想Entity Framework(也许NHibernate也是)在从外向里(Outside-in)方向也提供了支持,这也就是Dsimmons为代表的EF大佬经常说的,Entity Framework...,Entity Framework 似乎也是朝这个方向发展的,事实上,这也是比较可能和有效的发展思路–从这样角度来看EF现在的ORM/Mapping方面的不足也就容易理解了。

    77850

    在 .NET 中优化 API 性能:使用分页、筛选和投影实现高效的数据检索

    PredicateBuilder 创建灵活的动态过滤器。 IQueryable 替换为延迟执行,以便仅在必要时提取数据。 用于一致地处理分页和排序的自定义属性。...这些工具有助于确保高效的数据检索,减少内存使用并提高性能,即使对于大型数据集也是如此。 问题 获取大型数据集的所有数据可能会占用内存并降低系统速度。...这有助于创建灵活的数据筛选条件:PredicateBuilder public static class PredicateBuilder { public static Expression...Title { get; set; } } 该类是包含用于筛选项目的属性的记录。在这种情况下,它包括一个可选属性,允许用户按标题搜索项目。...ProjectToType 此外,通过自定义属性和扩展方法实现分页和排序,可实现简洁灵活的 API 设计。这种灵活性使用户能够根据特定需求自定义其请求,从而提高应用程序的整体响应能力和效率。

    1.8K10

    C#内建接口:IQueryable

    强类型查询:IQueryable 接口允许我们使用强类型的查询表达式,利用编译器的类型检查来捕获错误和提供智能感知。...在 C# 中,常用的查询提供者是 Entity Framework(EF),它可以将 IQueryable 查询转换为适当的 SQL 查询语句,并与数据库进行交互以获取结果。...可组合性:IQueryable 查询具有良好的可组合性,我们可以根据需要在查询中添加和组合多个查询操作。这使得我们可以根据不同的条件动态构建查询,以及重复使用和组合查询逻辑。...总结而言,IQueryable 接口是在 C# 中用于表示可查询数据源的接口,它提供了延迟查询的能力、强类型的查询表达式、查询提供者和查询优化等特性。...通过利用 IQueryable 接口,我们可以以一种类型安全且灵活的方式对数据源进行查询和操作。

    81610

    在Entity Framework中使用存储过程(二):具有继承关系实体的存储过程如何定义?

    另一个表T_EMP用于存储销售人员的信息,它具有一样的主键EMP_ID,额外的两个字段代表负责的区域(Territory)和提成的比率(Commission Rate)。...二、基于继承关系实体的查询与更新 在引入存储过程之前,我们先来谈谈针对于如上一个具有继承关系实体的.edmx模型,如果进行查询和更新。...在Entity Framework中使用存储过程(一):实现存储过程的自动映射 在Entity Framework中使用存储过程(二):具有继承关系实体的存储过程如何定义?...在Entity Framework中使用存储过程(三):逻辑删除的实现与自增长列值返回 在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?...在Entity Framework中使用存储过程(五):如何通过存储过程维护多对多关系?

    2.5K100

    浅析Entity Framework Core2.0的日志记录与动态查询条件

    前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.....本文主要是浅析一下Entity Framework Core2.0的日志记录与动态查询条件 去年我写过一篇关于Entity Framework Core1.0和1.1的日志记录和事务的文章: 一步步学习...在日志记录方面,有了比较大的变化..所以我觉得还是需要学习学习 正文 一、 Entity Framework Core2.0的日志记录 早在Entity Framework Core1.0 ,我们就使用相关的...在Entity Framework Core2.0  估计是为了配合ASP.NET Core的日志.所以对这些接口进行了更进一步的包装,也弃用了一些接口和类,如:IRelationalCommandBuilderFactory...二、 Entity Framework Core2.0 动态Linq查询 Entity Framework Core2.0出来这么久了..Github上面也有很多相关的扩展类库..今天我们就来玩玩这个动态查询库

    1.9K60

    ado.net data services开发框架学习

    数据服务使用标准的http请求获取和操作(CRUD)数据服务,并且实现这些操作都非常简单。...环境 Visual Studio 2008 SP1 .NET Framework 3.5 SP1 数据源     ado.net数据服务可以很方便的将ado.net entity framework...创建的model发布出一个数据服务,ado.net entity framework支持几乎所有的数据源(sql,xml,web service,应用层数据接口),同时也可以自定义一个数据通过实现IUpdatable...,IQueryable接口 创建一个ado.net数据服务 Ado.net数据服务是一个wcf的特殊形式,从而可以设定配置适用于各种环境,下面是一个创建ado.net数据的实例,创建一个数据服务必须先创建一个...web project,接着向你需要与数据建立连接(ado.net entity framework),然后再创建一个ado.net数据服务实现数据的发布。

    1K60

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(8)-MVC与EasyUI DataGrid 分页

    前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 EasyUI Datagrid在加载的时候会提交一些分页的信息到后台,我们需要根据这些信息来进行数据分页再次返回到前台 实现 首先要让...DataGrid支持分页,我们需要在JS Datagrid中加入下列几个属性 是否启用分页:pagination 默认是false 每页数量:pageSize 默认10 可选择每页数量:pageList...实际已经分页,但是不正确的,每一页的数据一样。我们要根据分页的参数去取 查看技巧 ?...其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用ref参数,则方法定义和调用方法都必须显式使用ref关键字。...).ToArray() }; return Json(json, JsonRequestBehavior.AllowGet); } 和修改

    1.5K70

    LINQ鲜为人知的7个秘密:从表达式树到并行查询的深度探索

    这根流畅、富有表现力的魔杖,能将笨拙的for循环转化为优雅的声明式查询。Where、Select、OrderBy这些操作对你来说早已是肌肉记忆。但如果我告诉你,你所了解的LINQ只是冰山一角呢?...IQueryable不存储数据,它存储的是"配方" 这可能是最关键也最容易被误解的概念。当你针对数据库编写LINQ查询时,通常操作的是IQueryable。...链式调用.Where()或.OrderBy()时,实际上并没有过滤数据,而是在构建表示查询步骤的抽象数据结构。...只有当你调用ToList()、First()或Count()等物化方法时,LINQ提供程序(如Entity Framework)才会将整个"配方"转换为优化后的SQL查询并发送到数据库。...它最初在.NET Framework 4.0引入,却在.NET Core和.NET Standard的初期版本中神秘消失。多年来,转向跨平台开发的开发者不得不自己实现或依赖第三方库。

    18800

    【源码解读(二)】EFCORE源码解读之查询都做了什么以及如何自定义批量插入

    一条查询语句悲惨的一生     我们在创建好了DBContext之后呢,就需要去做一些增删改查的操作了,在这里我就以一个简单的查询语句为例子,代码都是和上篇文章中一样的,var res= DbContext.Contacts.Take...(10).ToList();这个语句的执行,都经历了哪些,众所周知,DBSet实现了IQueryable的接口,所以我们在调用的时候是可以使用Queryable里面的扩展方法的,例如上面的语句中,Take...IAsyncQueryProvider的实现,按照我们上面的代码来看,实际上最终返回的是EntityQueryable的一个类型,在上一文章中,我们实现过自定义的IQueryable的一个类型,最终自定义的实现的这个...这个接口源码有四个实现,我除了InMemory 和cosmos可能用的自己实现,剩下的一个DataBase是抽象的,我们默认用的是RelationalDatabase实现DataBase的抽象类,但是CompileQuery...,connection是我们当前数据库的连接,最终只在Execute和ExecuteAsync里面去写自己的批量逻辑就行了。

    77350

    ASP.NET Web API对OData的支持

    XML具有强大对数据的描述能力,Atom格式和AtomPub都建立在XML之上,在Google和微软的推动下,也已经成为标准。...微软基于EDM模型释出了:OData,这里也可以看出Entity Framework对于NHibernate这样的ORM的工具不同的战略考虑。...开放数据协议(OData)是一个查询和更新数据的Web协议。OData应用了web技术如HTTP、Atom发布协议(AtomPub)和JSON等来提供对不同应用程序,服务和存储的信息访问。...取代创建客户端签名和参数,我们问了如下的问题:“如果你将数据集作为源处理,并为最频繁使用的操作定义模式,像查询、分页、排序、新建、删除和更新,服务接口因该是什么样子的?” 这也就导致OData的创建。...Hongmei还演示了高级场景中的查询验证,如为$skip、$top、$orderby、$filter自定义默认验证逻辑,以及使用ODataQueryOptions来验证查询。

    3.4K50

    【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式

    其中,LINQ查询和表达式是C#高级主题中的一项关键内容,具有以下重要性和优势: 数据处理和操作: 在现代软件中,数据处理和操作是至关重要的。...以下是在使用Entity Framework进行数据库查询时的基本示例: 假设我们有一个数据库表格 Students,包含学生的姓名、年龄和成绩信息。...7.1 使用Entity Framework和LINQ to SQL进行数据库操作 当使用 C# 编程语言时,可以使用 Entity Framework 和 LINQ to SQL 来进行数据库操作。...下面我将分别介绍一下 Entity Framework 和 LINQ to SQL 的基本用法。...以下是一个简单的示例,展示了如何使用 Entity Framework 进行数据库操作: 安装 Entity Framework: 在项目中使用 NuGet 包管理器安装 Entity Framework

    5.9K61

    Repository个人实践

    红框框起来的部分,就是关于Repository的那些部分,其中,Account.Infrustructure.Contract和Account.Infrusture.EF是核心,可以跨解决方案或工程存在...很简单,一个基于netstandard的类库,其中就两个接口定义,分别对应Repository和UoW的核心概念,IRepository的定义如下: public interface IRepository...TEntity GetByID(object id); void Insert(TEntity entity); void Delete(object id);...泛型IRepository接口用来规范所有仓储都应该具有的基础增删查改方法,这里有2点需要注意: 1)方法返回类型为IQueryable,目的是延迟查询,用过类似EF的ORM的应该都知道; 2)接口有个泛型参数...这玩意儿就像ML,在XX和获得GC的大前提下,采用何种姿势,各位随意,只要自己爽就成。如果你非要尝试各种不同姿势,未尝不可,只要自己不嫌累,是不是。。。

    1.4K20

    使用OData协议查询Windows日志

    XML具有强大对数据的描述能力,Atom格式和AtomPub都建立在XML之上,在Google和微软的推动下,也已经成为标准。...微软基于EDM模型释出了:OData,这里也可以看出Entity Framework对于NHibernate这样的ORM的工具不同的战略考虑。    ...在PDC大会上,微软宣布了一个代号为 “Dallas”的社区技术预览(CTP),由Windows Azure 和SQL Azure构建的信息服务,能够让开发者与信息工作者在任何平台上使用优质的第三方数据集和内容...WCF Data Service默认使用的是Entity Framework,使用Entity Framework参看文章WCF Data Service QuickStart,还有一个Reflection...,然后使用Reflection Provider实现一个IQueryable接口的数据源: using System; using System.Collections.Generic; using

    1.4K90

    Entity Framework 简单查询

    前言 首先来简单的复习一下如何使用Code First。 第一步还是先建立一个控制台的应用程序,然后通过Nuget添加Entity Framework。...那么同时会给packages.config和App.config添加相应的配置。 第二步添加一个数据操作上下文实体类。添加两个构造函数,并添加一个Person的实体类。...-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?...Linq To Entity表达式查询  查询表达式是C#3.0新增的功能,它是由一组类似于T-SQL或XQuery声明性语句组成,CLR并不能直接读取这种查询表达式而是在编译时转换为对应的方法调用。...例如上面的方法我们可以转换为如下代码,他们的效果是一样的,返回的都是“IQueryable”对象,这里的代码其实也就是我们开始为创建数据库测试的代码 using (var db

    1.1K20

    Asp.Net Core 扩展 Linq,简化自定义

    甚至在有些时候需要三个同时处理来更精确的筛选数据,而对于 Asp.Net Core 来说,用的语言是 C#,是一门强类型语言,在许多时候具有很大便利性,但是正因为这种原因,在某些时候却不太方便使用,需要进行额外方式来进行处理...普通查询 对于 Linq 查询来说,Where 和 OrderBy 使用时需要直接点出来属性或者字段才行,如下所示: // 数据结构 public class ArticleTag { public...if...else 来判断,那么将会是一个非常大的工程量,每个实体上面有 m 个属性,而一个项目中有 n 张表,那么几乎需要 m*n个判断进行处理,非常的差劲,不利于后续扩展和维护。... /// public static IOrderedQueryable OrderBy(this IQueryable... /// public static IOrderedQueryable OrderBy(this IQueryable

    2.2K10

    用ASP.NET Core 2.1 建立规范的 REST API -- 翻页排序过滤等

    首先要在执行分页动作之前附加过滤条件,query的类型必须是IQueryable才可以动态组建查询表达式,所以使用了AsQueryable()方法;然后分别判断两个条件并附加条件(注意大小写问题和两头空格的问题...的 FirstName 和 LastName属性 Resource Model上的正序可能在Entity Model上就是倒序的:Age 升序,而Entity Model的BirthDate就是降序 需要支持多属性的排序...用程序来说就是,一个字符串“Rank asc”要映射成一个集合,而集合元素的类型有两个属性:Entity Model的属性名和排序的方向。 所以先把集合里这种元素的类建立出来: ?...到这里,Resource和Entity Model之间映射的部分差不多做完了,接下来要考虑整个排序的问题,做这样一个扩展方法: ?...它应用于IQueryable,并把orderBy字符串和属性映射表传进来。 经过一些初步检验之后,把orderBy按“,”分解成字段属性的数组。

    1.6K10
    领券