博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跟我学习NHibernate (1)
阅读量:5949 次
发布时间:2019-06-19

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

引言:Nibernate概述

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

 

1.给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
pets = query.List
(); 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
()[0]; pet.PetName="Jason"; transaction.Commit(); } } //再次从数据库里读取所有的信息 using (ISession session = OpenSession()) { IQuery query = session.CreateQuery("From Pet"); IList
pets = query.List
(); 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
()[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(); } }}

 

转载于:https://www.cnblogs.com/kmsfan/p/4783043.html

你可能感兴趣的文章
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>