nhibernate

C# 数据操作系列

…衆ロ難τιáo~ 提交于 2020-08-05 21:06:15
0. 前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用。这一篇,我继续探索NHibernate背后的秘密。嗯,就是这样。 1. NHibernate结构 先给小伙伴们放个图: 这是NHibernate的整体结构图。NHibernate通过ADO.NET 建立访问数据库的连接,然后封装了一个Transaction(事务)工厂和一个Session工厂。每次操作的时候,通过两个工厂获取对应的Session/Transaction示例操作数据对象。 ISessionFactory - NHibernate.ISessionFactory: 一个基于单数据库的已编译的映射缓存,它是持久不变的且线程安全(额,这句话是从它的文档翻译过来的)。是一个提供ISession的工厂类,同时也是一个 IConnectionProvider的客户端。可以设置一个在事务之间的进程级或集群级的二级缓存。 ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。一个ADO.NET连接的封装,用来提供ITransaction的工厂。提供了一个通过主键检索对象和导航链接查询对象时的一级缓存。也就是EF Core中的导航属性。 Persistent Objects and

Copy in-memory SQLite Database to make unit tests faster

坚强是说给别人听的谎言 提交于 2020-08-02 02:52:04
问题 In C#/nHibernate-projects I am using SQLite to unit test my code, aproximately using the method described here: http://ayende.com/blog/3983/nhibernate-unit-testing. However, I find that building and configuring the in-memory database typically takes about 150ms. I have lots of unit test so this rapidly adds up. I want to build and configure the database once, store it in a static variable, and copy it every time a unit test needs a database. How do I back-up an in-memory database? I first

《Microsoft .NET 企业级应用架构设计 (第2版)》

泄露秘密 提交于 2020-07-28 09:48:54
**《Microsoft .NET 企业级应用架构设计 (第2版)》 ========== ========== ========== [作者] (意) Dino Esposito (意) Andrea Saltarello [译者] (中) 李永伦 [出版] 人民邮电出版社 [版次] 2016年04月 第2版 [印次] 2018年05月 第5次 印刷 [定价] 69.00元 ========== ========== ========== 【第01章】 【今天的架构师和架构】 (P010) 需求经由首席架构师处理之后会交由开发团队实现。 (P011) 瀑布模型已是明日黄花,你可以将它的死亡归咎于软件开发是一种工程学。 软件开发最流行的敏捷方法学是极限编程 (XP) 。 (P012) 架构师参与开发流程的所有阶段,包括需求分析和架构设计、实现、测试、集成以及部署。 架构师的主要职责是 : 确认需求,把系统分解成更小的子系统,识别和评估技术,以及制定规范。 (P013) 架构师确认需求,尽力在设计里采用和满足它们。 (P014) 架构师需要具备的一个重要特征是语言清晰。 【第02章】 【为成功而设计】 (P020) 虽然 RAD 方案对于以数据为中心的小型简单应用程序 (如 CRUD 应用程序) 来说可能刚好合适

C# 数据操作系列

不羁的心 提交于 2020-07-28 08:47:38
0. 前言 前言,暂时挥别NHibernate(虽然我突然发现这玩意还挺有意思的,不过看得人不多)。大步进入了有很多小伙伴向我安利的SQLSugar,嗯,我一直叫SugarSQL,好像是这个吧? 这是一个由国内开发者开发的ORM框架,是一个轻量级框架(最新版的sqlSugarCore大概只有290kb)。下图是sqlSugar的功能描述: 从图中我们能够大概看出,SqlSugar的使用需要预先创建一个SqlSugarClient对象。SqlSugar在此基础上添加了CRUD、实体信息维护(映射关系)、配置(AOP/过滤器等)、模式(DbFirst、CodeFirst)还有一些工具类等。可以看到这是一个简而全的框架。 同时,SqlSugar也为查询进行了进一步的扩展,以下是它支持的功能,以及在查询上的增强: 好了,废话不多说,先来试一下如何使用吧。 1. 安装 本节环境是dotnet + vscode。因为我的Rider过期了,懒得折腾。系统又是Linux,所以选择这种方式。至于Visual Studio和Rider的操作,十分简单,而且之前《C#基础系列16》里有过介绍。 先建一个解决方案,名字为DataProvider: dotnet new sln --name DataProvider 然后创建一个SqlSugarDemo的控制台项目: dotnet new console

C#的dapper使用

感情迁移 提交于 2020-07-26 04:32:24
Dapper是一款轻量级ORM工具( Github )。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀。你又觉得ORM省时省力,这时Dapper 将是你不二的选择。 为什么选择Dapper 轻量。只有一个文件( SqlMapper.cs ),编译完成之后只有120k(好象是变胖了) 速度快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。 支持多种数据库。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server 可以映射一对一,一对多,多对多等多种关系。 性能高。通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。 支持FrameWork2.0,3.0,3.5,4.0,4.5 Dapper的安装 方法一:使用NuGet安装 打开visual studio的项目,依次点击 工具 , NuGet包管理器 , 管理解决方案的NuGet程序包 ; 再点击 浏览 , 搜索dapper , 点击搜索结果中的Dapper , 勾选项目 , 选择安装 ; 在 解决方案管理器中点击项目 , 查看引用 ,如果有

C# 数据操作系列

若如初见. 提交于 2020-07-24 04:13:46
0. 前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用。这一篇,我继续探索NHibernate背后的秘密。嗯,就是这样。 1. NHibernate结构 先给小伙伴们放个图: 这是NHibernate的整体结构图。NHibernate通过ADO.NET 建立访问数据库的连接,然后封装了一个Transaction(事务)工厂和一个Session工厂。每次操作的时候,通过两个工厂获取对应的Session/Transaction示例操作数据对象。 ISessionFactory - NHibernate.ISessionFactory: 一个基于单数据库的已编译的映射缓存,它是持久不变的且线程安全(额,这句话是从它的文档翻译过来的)。是一个提供ISession的工厂类,同时也是一个 IConnectionProvider的客户端。可以设置一个在事务之间的进程级或集群级的二级缓存。 ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。一个ADO.NET连接的封装,用来提供ITransaction的工厂。提供了一个通过主键检索对象和导航链接查询对象时的一级缓存。也就是EF Core中的导航属性。 Persistent Objects and

Save and load Utc DateTime with NHibernate

三世轮回 提交于 2020-07-18 05:54:11
问题 I have problems with saving DateTime to an SQL Lite data base. (perhaps also with MS SQL) I want to save a DateTime in UTC time with NHibernate to the database and load it from the database. We work in the hole application with utc time and when we present the time on the ui, we change it to local time. I read a lot about DateTime and NHibernate: http://jameskovacs.com/2011/01/26/datetime-support-in-nhibernate/ http://www.milkcarton.com/blog/2007/01/19/NHibernate+DateTime+And+UTC.aspx

Should DTO and Entity both have input validations

穿精又带淫゛_ 提交于 2020-07-04 08:48:26
问题 I have a WCF layer and my Domain Model is behind this WCF layer. I am using Nhibernate as an ORM tool and all my business logic/ Data Access etc will be behind this WCF layer. I am exposing DTO to my clients. I have below questions 1) Should i create DTOs? is there any harm in exposing entities directly to wcf clients as my entities would also have business logic methods also in doing so i would have to corrupt my entitiy object with WCF attributes which i think is not good? 2) If i expose

Should DTO and Entity both have input validations

徘徊边缘 提交于 2020-07-04 08:46:47
问题 I have a WCF layer and my Domain Model is behind this WCF layer. I am using Nhibernate as an ORM tool and all my business logic/ Data Access etc will be behind this WCF layer. I am exposing DTO to my clients. I have below questions 1) Should i create DTOs? is there any harm in exposing entities directly to wcf clients as my entities would also have business logic methods also in doing so i would have to corrupt my entitiy object with WCF attributes which i think is not good? 2) If i expose

Many-to-many with Same Id Key fields

女生的网名这么多〃 提交于 2020-06-27 16:56:36
问题 How do I join two tables as many-to-one and one-to-many in nHibernate. They both have the same 'PLAN_ID' as the key column. My Database structures pre-existing. Below is the mapping I am using and the error I'm getting: Table: PLANN ( one ) PLAN_ID <-- PRIMARY KEY START_DATE CHECK_CHAR ... Table: PLANN_DOCUMENT ( to many ) PLAN_ID <-- PRIMARY KEY DOC_ID <-- ID to a DOCUMENT table DOC_NAME DOC_TYPE Plann class: public virtual... PlanId, StartDate, CheckChar, PlanStatus, public virtual ISet