Photon Server初识(三) ---ORM映射改进
一:新建一些管理类,

二、实现每个管理类
(1)NHibernateHelper.cs 类,管理数据库连接
using NHibernate;
using NHibernate.Cfg; namespace Nbibernate
{
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory; private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
var config = new Configuration();
config.Configure(); //解析nhibernate.cfg配置文件
config.AddAssembly("Nbibernate"); //解析 映射文件 _sessionFactory = config.BuildSessionFactory();
} return _sessionFactory;
}
} public static ISession OpenSession()
{
////打开一个跟数据库的回话
return SessionFactory.OpenSession();
}
}
}
(2)IDManager.cs 类,定义一些接口
using System.Collections.Generic;
using Nbibernate.Model; namespace Nbibernate.Manager
{
internal interface IDbManager
{
void Add(DbModel msg);
void Update(DbModel msg);
void Remove(DbModel msg); DbModel GetById(int id);
DbModel GetByName(string name);
ICollection<DbModel> GetAllDb(); bool VerifyModel(string name, int age);
}
}
(3)DbManager.cs 类,实现接口,实现数据库添加、修改、删除和查询(特别注意按照名字查询时有时有多个满足条件的返回)
using System.Collections.Generic;
using Nbibernate.Model;
using NHibernate.Criterion;
using NHibernate.Util; namespace Nbibernate.Manager
{
public class DbManager : IDbManager
{
public void Add(DbModel msg)
{
////session.Close();如果使用下面的using,就不用写session.Close()来释放session了,因为using会自动释放。下面的嵌套是先释放transacion,再释放session。
using (var session = NHibernateHelper.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
session.Save(msg);
transaction.Commit();
}
}
} public void Update(DbModel msg)
{
using (var session = NHibernateHelper.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
session.Update(msg);
transaction.Commit();
}
}
} public void Remove(DbModel msg)
{
using (var session = NHibernateHelper.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
session.Delete(msg);
transaction.Commit();
}
}
} public DbModel GetById(int id)
{
using (var session = NHibernateHelper.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var msg = session.Get<DbModel>(id);
transaction.Commit();
return msg;
}
}
} public DbModel GetByName(string name)
{
using (var session = NHibernateHelper.OpenSession())
{
var iCriteria = session.CreateCriteria(typeof(DbModel));
iCriteria.Add(Restrictions.Eq("Name", name)); //使用 UniqueResult 查询时,如果有多个满足的,这会报错
//DbModel msg = iCriteria.UniqueResult<DbModel>(); //使用List查询,这里取第一个返回
DbModel msg = null;
var msgArr = iCriteria.List<DbModel>();
if (msgArr.Any()) msg = msgArr[]; return msg;
}
} public ICollection<DbModel> GetAllDb()
{
using (var session = NHibernateHelper.OpenSession())
{
var msgArr = session.CreateCriteria(typeof(DbModel)).List<DbModel>(); return msgArr;
}
} public bool VerifyModel(string name, int age)
{
using (var session = NHibernateHelper.OpenSession())
{
var iCriteria = session.CreateCriteria(typeof(DbModel)); //多条件查询
iCriteria.Add(Restrictions.Eq("Name", name))
.Add(Restrictions.Eq("Age", age)); DbModel msg = null;
var msgArr = iCriteria.List<DbModel>();
if (msgArr.Any()) return true; return false;
}
}
}
}
三、修改Program.cs 文件进行测试
(1)、添加
namespace Nbibernate
{
internal class Program
{
public static void Main(string[] args)
{
DbModel msg = new DbModel() { Name = "gggggKddd",Title = "jttttt", Age = };
IDbManager manager = new DbManager();
manager.Add(msg);
}
}
}
(2)、修改、删除
namespace Nbibernate
{
internal class Program
{
public static void Main(string[] args)
{
IDbManager manager = new DbManager();
DbModel msg = new DbModel() {Id = , Name = "kokoko", Age = , Title = "okoko"};
manager.Update(msg); //更新,必须指定ID DbModel msgrm = new DbModel() { Id = };
manager.Remove(msgrm); //删除
}
}
}
(3)查询
namespace Nbibernate
{
internal class Program
{
public static void Main(string[] args)
{
IDbManager manager = new DbManager(); //按照主键ID查询
DbModel msg = manager.GetById();
Console.WriteLine(msg.Name);
Console.WriteLine(msg.Age); //按照name查询
DbModel msgv2 = manager.GetByName("cjcjcc");
Console.WriteLine(msgv2.Id);
Console.WriteLine(msgv2.Age); //获取所有数据
ICollection<DbModel> msgArr = manager.GetAllDb();
foreach (DbModel u in msgArr)
{
Console.WriteLine(u.Id + " " + u.Name + " " + u.Age);
} //根据name和age查询,判断是否存在
bool sit = manager.VerifyModel("kokoko",);
Console.WriteLine(sit);
}
}
}
查看数据库数据,是否操作成功
参考文档:https://blog.csdn.net/qq_40323256/article/details/82914340
Photon Server初识(三) ---ORM映射改进的更多相关文章
- Photon Server初识(四) --- 部署自己的服务Photon Server
准备工作: 1.一台 window 虚拟机(本机是window也行) 2.下载SDK : https://www.photonengine.com/zh-CN/sdks#server 一:SDK介绍 ...
- 转:C#制作ORM映射学习笔记三 ORM映射实现
现在开始实现ORM的主体模块,首先需要在项目中新建一个类,命名为DbAccess,然后在项目的引用中添加两个dll,分别是MySql.Data.dll和System.Data.SQLite.dll,这 ...
- Photon Server初识(二) ---通过NHibernate 映射数据库
一.下载 NHibernate.dill 官网:https://nhibernate.info 或者通过NuGet下载(详情看上一节) 二.新建一个项目,并引入包 引入包 三.配置(重点) 1.配置x ...
- Photon Server初识(六) --- 客户端与服务端消息传递
前一章客户端与服务端连接成功,现在需要前后端进行数据传递. 一.前端发送消息.在项目Scripts目录中新建脚本 TestSer.cs.并挂载到相机上 二.客户端发送数据给服务端.编辑客户端代码 Te ...
- Photon Server初识(一) ---C#链接MySql
环境: 1.MAC电脑,JetBrains Rider编辑器 2.本地MySql5.7 (开始安装8.1发现使用 NHibernate 映射链接不上) 一.新建工程 二.引入dll包(MySQL.Da ...
- Photon Server初识(五) --- 客户端连接服务端
准备:Unity开开发IDE. 一.新建Unity3D项目 导入包,在资源下新建目录 Plugins .在之前解压的SDK目录 lib中找到 Photon3Unity3D.dll,拖到新建的目前下 二 ...
- 同一个数据库实例,不同用户下多表创建视图,Hibernate完毕ORM映射,Spring整合,后台实现
1.同一个数据库实例.同用户,多表创建视图 2.同一个数据库实例,不同用户下.多表创建视图 3.同一个数据库,不同数据库实例,多表创建视图 4.不同类型数据库,多表创建视图 1.同一个数据库实例.同用 ...
- 用dotnet core搭建web服务器(三)ORM访问数据库
访问传统sql数据库,大家以前都是用sql语句去查询.这些年流行orm方法 ORM是对象关系映射的简拼,就是用一个对象(class)去表示数据的一行,用对象的成员去表述数据的列 dotnet 官方很早 ...
- Photon Server 实现注册与登录(一) --- Hibernate整合到项目中
本系列实现目的:基于Photon Server实现注册于登录 一.拷贝Nbibernate项目的文件到MyGamerServer项目中. 二.数据库新建表,结构如下 三.修改文件名和配置 (1).将拷 ...
随机推荐
- 内存管理2-@class关键字
Review: 给对象发送消息,进行相应的计数器操作. Retain消息:使计数器+1,改方法返回对象本身 Release消息:使计数器-1(并不代表释放对象) retainCount消息:获得对象当 ...
- 关于rsa公钥格式的处理,一行纯内容进行换行格式化
最近在开发百度小程序,他的平台公钥是纯字符串,公钥的内容,没有rsa文件的头(-----BEGIN PUBLIC KEY-----)和尾部分-----END PUBLIC KEY----- 但是 PH ...
- JavaWeb_(SpringMVC框架)SpringMVC入门
Spring MVC又叫SpringWebMVC是一个轻量级的基于请求响应的表现层框架.它是Spring框架的一部分.SpringMVC与Struts2都可以替代原始Servlet技术. Spring ...
- python3安装web.py
今天准备测试代理池IPProxyPool获取到ip的质量,在安装web.py的时候遇到了些问题,在此记录一下. 1.安装资料 web.py官网:http://webpy.org/ web.py的git ...
- 从TCP到Socket,彻底理解网络编程是怎么回事
进行程序开发的同学,无论Web前端开发.Web后端开发,还是搜索引擎和大数据,几乎所有的开发领域都会涉及到网络编程.比如我们进行Web服务端开发,除了Web协议本身依赖网络外,通常还需要连接数据库,而 ...
- 启动maven项目时报错Failed to start component [StandardEngine[Tomcat]]: A child container failed during start
详细错误信息:Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run (default-cli) on ...
- ubuntu下安装g++
主要来自ubuntu中文社区http://www.ubuntu.org.cn/support/documentation/doc/VMware 首选,确认你已经安装了build-essential程序 ...
- count(1) 与 count(*) 比较
1. count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和count(*)的效 ...
- Kibana Query Language(KQL)
语法: 官方文档 If you’re familiar with Kibana’s old lucene query syntax, you should feel right at home wit ...
- Maven项目添加阿里云HBase依赖之后第一行才出现红叉报错“Missing artifact jdk.tools:jdk.tools:jar:1.6”的解决办法
首先是从阿里云上下载了一个样例项目"hbase-demo",然后用eclipse打开,此时eclipse会去下载aliyun.hbase依赖. 等待一段时间后,pom.xml却报错 ...