首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

盘点 .NET 比较流行的开源的ORM框架

下面推荐10个主流比较流行的ORM框架,都是开源的项目: 一、SqlSugar(国内) 支持SqlServer、MySql、PgSql和Oracle插入blukcopy 分表大数据自处理 支持多租户、多库事务...支持一对多和多对多的导航属性 支持MySql、SqlServer、Sqlite、Oracle、postgresql、QuestDb、ClickHouse、达梦、人大金仓、神通数据库、瀚高、MsAccess...开源地址:https://github.com/nhibernate/nhibernate-core 七、ServiceStack/ServiceStack.OrmLite(国外) 简单的 .NET 的快速...插入/删除/更新/保存和 IsNew 的辅助方法 分页请求会自动计算出总记录数并获取特定页面。 简单的交易支持。 更好的参数替换支持,包括从对象属性中获取命名参数。...(V5) 用于记录异常、安装值转换器和将列映射到没有属性的属性的挂钩。

4.2K42

2022年了有哪些值得推荐的.NET ORM框架?

它解决了对象和关系型数据库之间的数据交互问题,ORM的作用是在关系型数据库和业务实体对象之间作一个映射,这样我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法...EntityFramework.VersionedProperties -  将对象里每次变更历史自动保存到一个特定的属性里。审计或者做历史版本时比较适用。...Dapper Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。...POCO 添加基本的 CRUD 操作(获取、插入、更新、删除)来补充Dapper。...内存高效- 它提取并缓存您的对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程中重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。

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

    2022年了有哪些值得推荐的.NET ORM框架?

    它解决了对象和关系型数据库之间的数据交互问题,ORM的作用是在关系型数据库和业务实体对象之间作一个映射,这样我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法...EntityFramework.VersionedProperties -  将对象里每次变更历史自动保存到一个特定的属性里。审计或者做历史版本时比较适用。...Dapper Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。...POCO 添加基本的 CRUD 操作(获取、插入、更新、删除)来补充Dapper。...内存高效- 它提取并缓存您的对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程中重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。

    3.9K20

    NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介

    目前最流行的就是ServiceStack.Redis这个开源项目,其在GitHub上的下载地址为:https://github.com/ServiceStack/ServiceStack.Redis ?...一个Key对应一个Value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片(生成二进制)或者序列化的对象。   ...key/value结构来存储,主要有以下2种存储方式:   第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时...第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据...), 也就是通过key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题,也就很好的解决了问题。

    40310

    Visual Studio+JavaScript 的前后端调试方法你真的会了么?

    但是,对于很多刚入门的程序员,或者已经入坑几年的所谓的有经验的程序员仍然在开发过程中,因为不知道、或者了解较少的调试技巧,调试方法,导致无法在项目开发过程中快速有效的开发, 或者无法在使用第三方框架的情况下...具体过程如下: 1)项目名称鼠标点击右键,选择“属性”,得到“属性”窗口,选择左侧 Web 选项,配置服务器 ?...就这个 ServiceStack.Redis 而言,跟随右侧的 github 地址:https://github.com/ServiceStack/ServiceStack.Redis,就能够找到如下的内容...点击安装,提示安装的 dll,并且在控制台的输出中也会输出对应的信息。如下图: ? 插入 redis 键值对 ?...那么如果我们想利用源码查看 ServiceStack.Redis 是插入数据的实现过程的情况下,应该如何操作呢? 查看源码执行过程 1)查看方法的定义位置 ? 2)找到对应的命名空间 ?

    1.7K20

    OB 运维 | MySQL 迁移 Oracle 场景中自增主键的实践

    ,主要用于异构数据库迁移场景中非表对象的 DDL 导出和转换,如:Oracle 中的序列、函数、存储过程、包、触发器、视图等对象。...建表时注意: 应将表名和字段名都改为大写,因为 Oracle 中严格区分数据库对象的大小写。...创建序列时根据源端表上自增列最大值来指定 START WITH 属性。 注意: 使用 GENERATED BY DEFAULT AS IDENTITY 属性生成的序列无法直接删除,会报错。...4总结 本文验证并阐述了在 OB Oracle 中实现自增主键的两种方法:创建自定义序列和利用 GENERATED BY DEFAULT AS IDENTITY 属性生成序列。...方案二 利用 GENERATED BY DEFAULT AS IDENTITY 属性生成序列时,存在一些限制: 因序列由系统自动创建并管理,需要查询系统视图才能获取序列名,无法与业务表名对应。

    38620

    【MyBatis框架点滴】——mybatis插入数据返回主键(mysql、oracle)

    主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A、B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键。...keyProperty:将查询到的主键值设置到parameterType指定对象的哪个属性。   ...主键为UUID时(主键必须为字符类型)   使用mysql的方法UUID()方法获取随机的UUID作为主键,select UUID()可以在插入数据前,生成随机的UUID并通过keyProperty赋值给将要插入记录的主键...sex,address) values (#{id},#{userName},#{birthday},#{sex},#{address})   在上述代码中可以看到order 的属性值为...背 景数据库为oracle: 主键为自增时(主键为数值类型):   在oracle中实现主键自增,需要先创建序列,相当于创建一个全局变量,用来存储对应表的主键的当前最大值(主键为数值类型时)。

    2.1K20

    Oracle数据库常用操作命令

    使用DROP USER命令可以删除用户,当用户拥有模式对象时则无法删除用户,而必须使用CASCADE选项以删除用户及用户模式对象。...3)如果创建的视图包含连接运算符,DISTINCT运算符、集合运算符、聚合函数和groupby子句,则将无法更新视图。 4)如果创建的视图包含伪列表达式,则将无法更新视图。...CURRVAL:返回序列的当前值,即最后一次引用NEXTVAL时返回的值 举例: 创建序列 创建表 插入数据 查看数据 查看序列的当前值 Currval返回序列的当前值,即最后一次引用NEXTVAL...,只在oracle的数据字典中保存其定义描述,在使用同义词时,oracle会将其翻译为对应对象的名称。...(5)按范围分区是,如果某些记录暂时无法预测范围,可以创建maxvalue分区,所有不在指定范围内的记录都会被存储到maxvalue所在的分区中 (6)再次插入以下数据 (7)查询 (8)查看所有分区的命令

    3.2K11

    Oracle数据库常用十一大操作指令

    使用DROP USER命令可以删除用户,当用户拥有模式对象时则无法删除用户,而必须使用CASCADE选项以删除用户及用户模式对象。...对象权限 对象权限是指针对某个特定模式对象执行操作的权利,只能针对模式对象来设置管理对象权限,包括:表、视图、序列、存储过程等。 ?...物化视图 含义:就是具有物理存储的特殊视图,占据物理空间,就像表一样 是远程数据的本地副本,或者用来生成基于数据表求和的汇总表 ?...十、同义词 ---- 同义词是对象的一个别名,不占用任何的实际存储空间,只在oracle的数据字典中保存其定义描述,在使用同义词时,oracle会将其翻译为对应对象的名称。 1....(5)按范围分区是,如果某些记录暂时无法预测范围,可以创建maxvalue分区,所有不在指定范围内的记录都会被存储到maxvalue所在的分区中 ? (6)再次插入以下数据 ? (7)查询 ?

    2.1K30

    Oracle总结【视图、索引、事务、用户权限、批量操作】

    ….在SQL中,我们查询出来的数据可看成是一张表,那么我们在插入数据的时候,可以根据查询出来的数据进行插入…这就可以看成是批量操作… 值得注意的是,如果没有指定插入哪些字段的话,那么查询出来的全部字段均会插入表中...Oracle使用的是序列这么一个对象…. (1)类似于MySQL中的auto_increment自动增长机制,但Oracle中无auto_increment机制 (2)是oracle提供的一个产生唯一数值型值的机制...emp_empno_seq序列的的increment by属性为5 alter sequence emp_empno_seq increment by 5; 修改emp_empno_seq序列的start...你无法做insert操作,表真正亡,序列亡 删除序列,会影响表吗?...为表创建外健 8)alter修改表或者序列的属性 》用sys登录,查询c##tiger所拥有的对象权限 sqlplus / as sysdba; col grantee for a10;

    2K41

    mybatis的SelectKey属性的作用

    属性 描述 keyProperty selectKey 语句结果应该被设置的目标属性。 resultType 结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。...如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。...像​​Oracle​​这样取序列的情况,需要设置为before,否则会报错。...user之前执行(order="BEFORE"),该句话执行完之后,会生成一个ID,传进来的参数User对象里的id字段就会被赋值成sequence的值。...插入之后获得ID赋值到传进来的对象中(对象中必须有相应的属性)。 像如下本身是Mysql或SqlServer的数据库,没有必要这样使用,有点浪费。 <!

    8510

    Oracle 错误总结及问题解决 ORA「建议收藏」

    相应文件具有一个 Oracle 管理文件文件名。...ORA-08004:序列XX无法实例化 错误说明:下一个序列值超过序列配置的最大值 ORA-08102: 未找到索引关键字, 对象号 2852155, 文件 9, 块 1544794 (2) 错误说明:...ORA-13296: 坐标系统的说明不正确 ORA-13300: 单点转换错误 ORA-13303: 无法从表中检索几何对象 ORA-13304: 无法在表中插入转换的几何对象 ORA-13330:...: 元数据中的一个或多个配置属性具有无效的值 ORA-16805: LogXptMode 属性的更改违反了全局保护模式 ORA-16806: 未启用补充事件记录功能 ORA-16807: 无法更改数据库保护模式...) 插入以兼容级运行的数据库 ORA-19727: 无法将数据 [] (在级) 插入正在运行的 Oracle 数据库 ORA-19728: 数据对象号在表和分区间 (在表中) 冲突 ORA-19729:

    22.8K20

    加速你的Hibernate引擎(下)

    4.8 二级缓存调优 HRD第20.2节 “二级缓存”中的描述对大多数开发者来说过于简单,无法做出选择。...对于实体的删除或插入动作,或者集合变更,调用序列都是相似的。...总是将批量插入嵌套在事务中。 每次事务修改的对象数量越少就意味着会有更多数据库提交,正如4.5节所述每次提交都会带来磁盘相关的开销。...如果对象的属性较多,例如是一张大的遗留表,那你应该开启该特性,和“dynamic-update”结合使用以避免太多数据库更新开销。...此外,还要注意,该特性会绕过Hibernate对版本数据(versioned data)的常用乐观锁策略。 4.10.5 增强的序列标识符生成器 范例11中使用Oracle的序列作为标识符生成器。

    97130

    Oracle学习笔记三

    default tablespace后边是表空间名称 oracle数据库与其它数据库产品的区别在于,表和其它的数据库对象都是存储在用户下的。...八、Oracle中的事务 这是因为 oracle的事务对数据库的变更的处理,我们必须做提交事务才能让数据真正的插入到数据库中,在同样在执行完数据库变更的操作后还可以把事务进行回滚,这样就不会插入到数据库...提交:commit   回滚::rollback Oracle中事务的保存点: ? 事务的隔离级别和属性: ?   ...,’Kevin',1,nu11,’Beijing'); 序列可能产生裂缝的原因:   回滚   系统异常   多个表共用一个序列 9.3 索引 索引是用于加速数据存取的数据对象。...PL/SQL (Procedure Language /SQL)是 Oracle对sql语言的过程化扩展,指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。

    3.2K51

    技术分享 | 从 MySQL 到 OBOracle:如何处理自增列?

    ID 列的 DEFAULT 属性为 sequence_name.nextval。...因此,执行述语句后,当 tablename 表中插入一行数据时,会自动为 ID 列赋值为 sequence_name 序列的下一个值。 3、验证该方法是否达到自增列的效果。...:new.id 表示新插入行的 ID 列,dual 是一个虚拟的表,用于生成一行数据用以存储序列的下一个值。 4、验证该方法是否达到自增列的效果。...测试发现,关于序列对象的名称在OB中不论是通过 GENERATED BY DEFAULT AS IDENTITY 自动创建,还是手动创建,都会占用 ISEQ$$_5000x_16 中 x 的位置,若删除序列或删除表...方法二(SEQUENCE + DDL):相较于第一种该方法只需要指定 DDL 改写 DEFAULT 属性省去了 DML 的操作,但仍需再指定自己创建的序列名 sequence_name,每个表的序列名都不一致

    36120
    领券