博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于NHibernate、LINQ、Entity Framework
阅读量:5369 次
发布时间:2019-06-15

本文共 3253 字,大约阅读时间需要 10 分钟。

NHibernate采用非侵入式的方式进行对象-关系映射,从而成就了其轻量级ORM技术的美名,这一点相信成为很多架构师钟爱他的重要理由。NHibernate技术架构如下图所示:

NHibernate技术架构图

 

NHibernate的使用大致可以分为配置信息、编写映射文件和持久化数据几个步骤:

一、配置信息

NHibernate需要对配置文件作以下配置方可使用:

NHibernate.Dialect.MsSql2008Dialect
NHibernate.Connection.DriverConnectionProvider
Data Source=localhost;User Id=sa;Password=11111111;Initial Catalog=Apollo;MultipleActiveResultSets=True;

二、映射文件

三、数据持久化

1 var sessionFactory = new Configuration().Configure().BuildSessionFactory();2 using (var session = sessionFactory.OpenSession())3 {4     session.Save(user);5     session.Flush();6 }

LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.NET代码以查询数据库相同的方式操作内存数据。LINQ提供提供了丰富的类似SQL的查询语法,功能强大且容易上手。

LINQ技术通过提供程序扩展,可以实现对任何数据源的访问。常用的提供程序有LINQ to SQL、LINQ to XML、LINQ to Objects、LINQ to Entities、LINQ to Datasets、LINQ to ADO.NET。LINQ技术架构如下图所示:

LINQ的使用大致包括连接配置、关系映射、上下文环境定义和数据持久化四步:

一、连接配置

LINQ的数据库连接配置与ADO.NET一样:

二、侵入式关系映射

[Table(Name = "User")] public class LinqUser : User {     [Column(IsPrimaryKey = true)]     public override Guid ID { get; set; }      [Column]     public override string Name { get; set; } }

三、上下文环境

internal class LinqContext : DataContext {     public LinqContext(string connection)         : base(connection)     {     }      public LinqContext(IDbConnection connection)         : base(connection)     {     }      public Table
Users { get { return this.GetTable
(); } } }

四、数据持久化

1 using (var db = new LinqContext(CONNECTION_STRING))2 {3     db.Users.InsertOnSubmit(user);4     db.SubmitChanges();5 }

Entity Framework的全称为ADO.NET Entity Framework,是在ADO.NET上层实现的ORM封装,其技术架构如下图所示:

Entity Framework的使用与LINQ一样,分为连接配置、关系映射、上下文环境定义和数据持久化四步:

一、连接配置

二、关系映射

Entity Framework是通过定义概念模型(CSDL)、物理模型(SSDL)及两者的映射关系(MSL),实现对象与关系映射的。

SSDL映射文件内容如下:

CSDL映射文件内容如下:

MSL映射文件内容如下:

三、上下文环境

Entity Framework提供了ObjectContext上下文环境,以对数据对象进行持久化操作。通过继承它,可以方便的实现自定义数据对象的访问。

internal class EntityContext : ObjectContext {     public EntityContext()         : this("name=EntityFramework")     {     }      public EntityContext(string connectionString)         : base(connectionString, "Chapter1")     {         this.Users = CreateObjectSet
(); } public ObjectSet
Users { get; set; } }

四、数据持久化

1 using (var db = new EntityContext())2 {3     db.Users.AddObject(user);4     db.SaveChanges();5 }

 

转载于:https://www.cnblogs.com/xiepeixing/archive/2013/02/20/2918096.html

你可能感兴趣的文章
HashMap面试知多少
查看>>
Effective C# 学习笔记(二十七)使你的类型可被序列化
查看>>
LDAP客户端配置
查看>>
(转)NAT原理与NAT穿越
查看>>
13.内存原理
查看>>
24.函数信号机制(本质上就是函数指针)
查看>>
The dependency `xxx` is not used in any concrete target.
查看>>
Bootstrap 中 下拉菜单和滚动监听插件(十一)(持续更新中。。。)
查看>>
团队-科学计算器-项目总结
查看>>
python 发邮件
查看>>
sql---left join;right join;inner join---区别
查看>>
maven profile集合spring占位符实现动态打包配置环境
查看>>
感知器算法PLA
查看>>
sklearn中的数据集的划分
查看>>
Xcode的几个高效快捷键
查看>>
机器人运动大赛8月落地嘉峪关,编程和军事成亮点
查看>>
进程控制
查看>>
用vue-cli搭建项目的 关于main.js
查看>>
浅谈Oracle权限体系
查看>>
「NOIp2018」 游记
查看>>