C#中的ORM框架

1. 什么是ORM

ORM:对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)

用于实现面向对象编程语言里不同类型系统的数据之间的转换

ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射
ORM可以解决数据库与程序间的异构性,比如:在C#中我们使用string表示字符串,而Oracle中可使用varchar2,MySQL中可使用varchar,SQLServer可使用nvarchar。

如果没有ORM我们原始代码如下:

LR_Error pLR_Error = new LR_Error()
{
    ErrorNum = Convert.ToInt32(dr[Table_LR_Error.T_LR_Error_F_ID]),
    GZBM = dr[Table_LR_Error.T_LR_Error_F_GZBM].ToString(),
    ParentPath = dr[Table_LR_Error.T_LR_Error_F_ParentPath].ToString(),
    FileExist = dr[Table_LR_Error.T_LR_Error_F_FileExist].ToString(),
};

2. 目前代码中的ORM都有哪些

2.1 C#中的ORM框架

  • SqlSugar (国内)
  • Dos.ORM (国内)
  • Chloe (国内)
  • StackExchange/Dapper (国外)
  • Entity Framework (EF) (国外)
  • NHibernate (国外)
  • ServiceStack/ServiceStack.OrmLite (国外)
  • linq2db (国外)
  • Massive (国外)
  • PetaPoco (国外)

2.1.1 SqlSugar

SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET CORE的高性能、轻量级 ORM框架,众多.NET框架中最容易使用的数据库访问技术。

  • 特点:

    • 开源、免费
    • 国内开发者开发、维护;
    • 支持.NET Core;
    • 支持主流数据库,如:SQL Server,MySql,Oracle,Sqlite等;
    • 维护更新及时

2.1.2 PetaPoco

PetaPoco:轻量的POCO对象和数据库映射的ORM框架。

  • 特点:

    • 开源、免费

2.1.3 linq2db

linq2db也是一款快速、轻量、类型安全的POCO对象和数据库映射的ORM框架。从构架上来说,linq2db是对比如:Dapper、PetaPoco这个的微ORM的进一步封装,但它不像Entity Framework那样笨重。它没有实现状态跟踪,需要自己处理实体的状态更改等。

2.1.4 Dos.ORM

Dos.ORM(原Hxj.Data)于2009年发布,2015年正式开源。在开发过程中参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,同时参考EF的Lambda语法进行大量扩展。该组件已在数百个成熟项目中应用。官方网站:http://ITdos.com/Dos/ORM/Index.html

  • 特点:

    • 开源、免费
    • 上手简单,0学习成本。使用方便,按照sql书写习惯编写C#.NET代码。功能强大
    • 高性能,接近手写Sql
    • 体积小(不到150kb,仅一个dll)
    • 完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等数据库
    • 支持大量Lambda表达式写法,国产ORM支持度最高,开源中国ORM排行前三
    • 不需要像NHibernate的XML配置,不需要像EF的各种数据库连接驱动
    • 遵循MIT开源协议,除不允许改名,其它随意定制修改

2.1.5 ServiceStack.OrmLite

ServiceStack.OrmLite的目标是提供一种方便,无干扰,无配置的RDBMS无关类型的封装,与SQL保持高度的契合,展现直观的API,可以生成可预测的SQL。
ServiceStack.OrmLite的宗旨:Fast, Simple, Typed ORM for .NET

  • 特点:

    • 开源、收费(免费版只支持单个库10张表)

2.1.6 Entity Framework (EF)

ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。该框架曾经为.NET Framework的一部分,但version 6之后从.NET Framework分离出来。

2.1.7 NHibernate

NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

  • 特点:

    • 开源、免费
    • 批量写入
    • 批量读/多重查询特性(我理解是在说Future?)
    • 批量的集合加载
    • 带有lazy=”extra”的集合
    • 集合过滤器和分页集合
    • 二级缓存(实际上NH的二级缓存貌似也很简单?)
    • 集成和扩展性
    • 代码自动生成,减少代码和sql的开发量,使开发人员摆脱开sql,ado.net和事务,缓存等底层

2.1.8 Massive

Massive:小巧,动态的微ORM框架。

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#,常见的ORM框架有Entity Framework、NHibernate、Dapper等,这里以Entity Framework为例,介绍如何访问SQL Server实例。 1. 安装Entity Framework 首先,需要在Visual Studio安装Entity Framework。打开NuGet包管理器控制台,执行以下命令: ``` Install-Package EntityFramework ``` 2. 配置连接字符串 在App.config或Web.config文件,需要配置SQL Server数据库的连接字符串,例如: ``` <connectionStrings> <add name="MyDbContext" connectionString="Data Source=localhost;Initial Catalog=test;User ID=root;Password=123456;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" /> </connectionStrings> ``` 其,`Data Source`指定了SQL Server实例的主机名,`Initial Catalog`指定了数据库名称,`User ID`和`Password`分别为数据库用户名和密码。 3. 创建实体类 使用Entity Framework需要创建实体类,实体类映射到数据库的表。例如: ``` public class User { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } ``` 其,`Id`属性为主键,类型为int,`Name`和`Age`属性分别为姓名和年龄,类型为string和int。 4. 创建DbContext类 使用Entity Framework需要创建DbContext类,DbContext类表示数据库上下文,包含了所有实体类与数据库表之间的映射关系。例如: ``` public class MyDbContext : DbContext { public DbSet<User> Users { get; set; } public MyDbContext() : base("name=MyDbContext") { } } ``` 其,`DbSet`表示一个实体集,`Users`属性表示User实体类对应的数据库表。`MyDbContext`类继承自`DbContext`类,调用基类的构造函数时,传入连接字符串的名称。 5. 使用DbContext进行数据库操作 在C#代码,可以使用DbContext对象进行数据库操作,例如: ``` using (var db = new MyDbContext()) { var user = new User { Name = "张三", Age = 20 }; db.Users.Add(user); db.SaveChanges(); } ``` 使用`using`语句创建`MyDbContext`对象,然后创建`User`对象并添加到`Users`属性,最后调用`SaveChanges`方法提交更改。Entity Framework会自动将实体类与数据库表之间的映射关系转换为SQL语句,执行数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值