好久没有更新了,在写设计与论文还有一些其他的事情,今天主要更新一下我在做项目中使用的Nhibernate的插件的使用与配置依然是老规矩最后有项目源码.
所需要的程序集MySql.Data与Nhibernate使用的是Nuget直接搜索进行使用的
然后是配置文件
中间写字图片没了换了个其他的图片软件编辑的,接下来是映射类与配置文件
数据库数据
- 最后粘贴源码
- 对初始建立对话的封装using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NHibernate.Cfg;
using NHibernate;
namespace NhibernaetDemo
{
class Nhibernate
{
private static ISessionFactory sessionFactory;
//对会话工厂进行封装不需要进行重复的创建
private static ISessionFactory Sessionfactory
{
get
{
if (sessionFactory == null)
{
var configuration = new Configuration();
configuration.Configure(); //解析hibernate.cfg.xml
configuration.AddAssembly("NhibernaetDemo");//解析映射文件user.hbm.xml
sessionFactory = configuration.BuildSessionFactory();//建立会话工厂
}
return sessionFactory;
}
}
public static ISession OpenSession()
{
return Sessionfactory.OpenSession();//返回一个与数据库的会话
}
}
} - 用户映射类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace NhibernaetDemo.Model
{
public class User
{
public virtual int Id{get;set;}
public virtual string Username { get; set; }
public virtual string Password { get; set; }
public virtual DateTime Registerdate { get; set; }
}
} -
用户接口
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NhibernaetDemo.Model;
namespace NhibernaetDemo.Manger
{
//使用接口方便更清楚的看见方法而且跟换其实现类
interface IUserManger
{
void Add(User user);
void Update(User user);
void Remove(User user);
User GetById(int id);
User GetByUsername(string username);
ICollection<User> GetAllUsers();
bool VerifyUser(string username, string password);
}
} -
接口功能实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NhibernaetDemo.Model;
using NHibernate;
using NHibernate.Criterion;
namespace NhibernaetDemo.Manger
{
class UserManger : IUserManger
{
//添加数据
public void Add(User user)
{
//ISession session = Nhibernate.OpenSession();//获取数据库对话
//session.Save(user);
//session.Close();
using (ISession session = Nhibernate.OpenSession())//括号中为需要释放资源的代码在执行完毕后会自动释放资源
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(user);
transaction.Commit();
}
}
}
//获取表中所有数据
public ICollection<User> GetAllUsers()
{
using (ISession session = Nhibernate.OpenSession())
{//简化
IList<User> users = session.CreateCriteria(typeof(User)).List<User>();
return users;
}
}
//通过ID获取数据
public User GetById(int id)
{
using (ISession session = Nhibernate.OpenSession())//括号中为需要释放资源的代码在执行完毕后会自动释放资源
{
using (ITransaction transaction = session.BeginTransaction())
{
User user = session.Get<User>(id);
transaction.Commit();
return user;
}
}
}
//通过用户名获取数据
public User GetByUsername(string username)
{
using (ISession session = Nhibernate.OpenSession())
{
//ICriteria criteria = session.CreateCriteria(typeof(User));//限定表
//criteria.Add(Restrictions.Eq("Username", username));填加条件
//User user = criteria.UniqueResult<User>();/
//简化
User user = session.CreateCriteria(typeof(User)).Add(Restrictions.Eq("Username", username)).UniqueResult<User>();
return user;
}
}
//删除数据
public void Remove(User user)
{
using (ISession session = Nhibernate.OpenSession())//括号中为需要释放资源的代码在执行完毕后会自动释放资源
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Delete(user);//删除利用的是ID进行删除
transaction.Commit();
}
}
}
//更新数据
public void Update(User user)
{
using (ISession session = Nhibernate.OpenSession())//括号中为需要释放资源的代码在执行完毕后会自动释放资源
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Update(user);//根据主键进行更新
transaction.Commit();
}
}
}
//多条件校验数据
public bool VerifyUser(string username, string password)
{
using (ISession session = Nhibernate.OpenSession())
{
User user = session.CreateCriteria(typeof(User))
.Add(Restrictions.Eq("Username", username))
.Add(Restrictions.Eq("Password",password))
.UniqueResult<User>();
if (user == null)
{
return false;
}
else
{
return true;
}
}
}
}
} -
使用 IUserManger manger = new UserManger();
//manger.Add(user);
//manger.Update(user);
//manger.Remove(user);
////User user2 = manger.GetByUsername("dewe");
//ICollection<User> users = manger.GetAllUsers();
//foreach (var item in users)
//{
// Console.WriteLine(item.Username+"---"+item.Password) ;
//}
Console.WriteLine(manger.VerifyUser("4","123"));
Console.ReadKey();项目链接:https://pan.baidu.com/s/11cyLNbuAh8VJE5sD4pmHdw
提取码:w1n0