关闭页面特效

跟我学习NHibernate (1)

1|0引言:Nibernate概述


  NHibernate是一个ORM框架,NHibernate是一个把C#对象世界和关系世界数据库之间联系起来的一座桥梁。NHibernate 能自动映射实体模型到数据库,所以这能让你集中考虑一件或多件事情。

 

2|01.给Program.cs文件添加代码


注意:以下程序仅供参考,不作为运行的依据。由于本文过旧,所以你必须从控制台进行安装,安装命令为: install-package NHibernate -version 2.1.2.4000

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NHibernate.Cfg; using NHibernate; using System.Reflection; namespace NHibernatePets { public class Pet { virtual public int id { get; set; } virtual public string PetName { get; set; } virtual public string Species { get; set; } virtual public DateTime Birthday { get; set; } virtual public string Speak() { return "你好!我的名字是 " + PetName + ",我是一个" + Species + " 以及我生日是" + Birthday; } } public class Program { public static void Main(string[] args) { Pet peter = new Pet { PetName="peter",Species="Cat",Birthday=new DateTime(2010,10,20)}; Console.WriteLine(peter.Speak()); //把peter保存到数据库里面去 try { using (ISession session = OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { session.Save(peter); transaction.Commit(); } Console.WriteLine("peter已经保存到数据库!"); } //从数据库里读取peter using (ISession session = OpenSession()) { IQuery query = session.CreateQuery("From Pet"); IList<Pet> pets = query.List<Pet>(); Console.Out.WriteLine("宠物的个数:" + pets.Count); pets.ToList().ForEach(p => Console.WriteLine(p.Speak())); } //更新宠物信息 using (ISession session = OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { IQuery query = session.CreateQuery("From Pet where PetName='peter'"); Pet pet = query.List<Pet>()[0]; pet.PetName="Jason"; transaction.Commit(); } } //再次从数据库里读取所有的信息 using (ISession session = OpenSession()) { IQuery query = session.CreateQuery("From Pet"); IList<Pet> pets = query.List<Pet>(); Console.Out.WriteLine("宠物的个数:" + pets.Count); pets.ToList().ForEach(p => Console.WriteLine(p.Speak())); } //删除宠物信息 using (ISession session = OpenSession()) { using (ITransaction transation = session.BeginTransaction()) { IQuery query = session.CreateQuery("From Pet where PetName='Jason'"); Pet pet = query.List<Pet>()[0]; session.Delete(pet); transation.Commit(); } } } catch (Exception e) { Console.WriteLine(e); } } static ISessionFactory SessionFactory; static ISession OpenSession() { //注意这种方式不是线程安全的 //SessionFactory会话费大量的资源,只创建一次 if (SessionFactory == null) { Configuration configuration = new Configuration(); configuration.AddAssembly(Assembly.GetCallingAssembly()); SessionFactory = configuration.BuildSessionFactory(); } return SessionFactory.OpenSession(); } } }

 


__EOF__

作  者ღKawaii
出  处https://www.cnblogs.com/kmsfan/p/4783043.html
关于博主:一个普通的小码农,为了梦想奋斗
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   yangliwen  阅读(296)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
0
0
关注
跳至底部
document.getElementById("homeTopTitle").innerText="ღKawaii";
点击右上角即可分享
微信分享提示