您的位置:首页 > 数据库 > MySQL

C# NHibernate MySQL 搭建与简单增删改查

2018-06-01 14:58 417 查看
hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property><!--配置版本-->
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property><!--配置驱动-->
<!--配置链接-->
<property name="connection.connection_string">Server=localhost;Port=3306;Database=mygamedb;User ID=root;Password=root;</property>

<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>

User.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="XpLearning"
namespace="XpLearning.Model">

<class name="User" table="users">
<id name="Id" column="id" type ="Int32">  <!--主键特殊标识,因其自增特点,加上generator属性,并由自身自增所以时native-->
<generator class="native"></generator>  <!--在根据id号删除的时候,无法找到id,需进一步研究-->
</id>

<property name="Username" column="userid" type="String"></property>
<property name="Password" column="passwd" type="String"></property>
<property name="Registedate" column="registedate" type="Date"></property>
</class>
<!--name与类中的属性对应, colume与表中的元素对应,type与NHibernate中的类型对应-->

</hibernate-mapping>
User.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XpLearning.Model
{
class User
{
public virtual Int32 Id { set; get; }
public virtual string Username { set; get; }
public virtual string Password { set; get; }
public virtual DateTime Registedate { set; get; }
}
}
IUserManager.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XpLearning.Model;

namespace XpLearning.Manager
{
interface IUserManager
{
void AddUser(User user);
void RemoveUser(User user);
void UpDateUser(User user);

User GetUserById(int id);
User GetUserByName(string name);

ICollection<User> GetUsers();

bool VerifyUser(string name, string password);
}
}

重点:

UserManager.cs

using NHibernate;
using NHibernate.Criterion;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XpLearning.Model;

namespace XpLearning.Manager
{
class UserManager:IUserManager
{
public void AddUser(Model.User user)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(user);
transaction.Commit();
}
}
}

public void RemoveUser(Model.User user)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Delete(user);//删除操作id号是关键
transaction.Commit();   //删除报错,找不到ID
}
}
}

public void UpDateUser(Model.User user)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Update(user);//更新操作id号是关键
transaction.Commit();
}
}
}

public ICollection<Model.User> GetUsers()
{
using (ISession session = NHibernateHelper.OpenSession())
{
//ICriteria criteria = session.CreateCriteria(typeof(User));
//criteria.Add(Restrictions.Eq("Username", name));
//User user = criteria.UniqueResult<User>();
IList<User> list =  session.CreateCriteria(typeof(User)).List<User>();
return list;
}
}

public Model.User GetUserById(int id)
{
User user = null;
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
user = session.Get<User>(id);//此处ID为主键
transaction.Commit();
}
}
return user;
}

public Model.User GetUserByName(string name)
{
using (ISession session = NHibernateHelper.OpenSession())
{
//ICriteria criteria = session.CreateCriteria(typeof(User));
//criteria.Add(Restrictions.Eq("Username", name));
//User user = criteria.UniqueResult<User>();
//UniqueResult<User>()方法:只返回第一个结果
//Add(Restrictions.Eq("Username", name)方法,添加查询条件
User user = session.CreateCriteria(typeof(User)).Add(Restrictions.Eq("Username", name)).UniqueResult<User>();

return user;
}
}

public bool VerifyUser(string name, string password)
{
User user = null;
using (ISession session = NHibernateHelper.OpenSession())
{

user = session.CreateCriteria(typeof(User))
.Add(Restrictions.Eq("Username", name))   //这里的字符串与User类对应
.Add(Restrictions.Eq("Password", password))
.UniqueResult<User>();
}
if(user == null)
{
return false;
}
else
{
return true;
}
}
}
}
Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NHibernate;
using NHibernate.Cfg;
using XpLearning.Model;
using XpLearning.Manager;

namespace XpLearning
{
class Program
{
static void Main(string[] args)
{
//Configuration configuration = new Configuration();
//configuration.Configure();//解析配置文件var configuration = new Configuration();
//configuration.AddAssembly("XpLearning");
////Console.WriteLine("Init ok");
//ISessionFactory sessionFactory = null;
//ISession session = null;
//ITransaction transaction = null;
//try
//{
//    sessionFactory = configuration.BuildSessionFactory();
//    session = sessionFactory.OpenSession();

//    transaction = session.BeginTransaction();
//    User user1 = new User(){Username = "zhubajie", Password = "zhubajie"};
//    session.Save(user1);
//    User user2 = new User() { Username = "zhubajie1", Password = "zhubajie" };
//    session.Save(user2);
//    transaction.Commit();
//}
//catch(Exception e)
//{
//    Console.Write(e);
//}
//finally
//{
//    if(transaction != null)
//    {
//        transaction.Dispose();
//    }
//    if(session != null)
//    {
//        session.Close();
//    }

//    if (sessionFactory != null)
//    {
//        sessionFactory.Close();
//    }
//}
// User user = new User() { Id = 1, Username = "shaheshang", Password = "shaheshang" };
//User user = new User() { Id = 1};
UserManager userManager = new UserManager();
//userManager.AddUser(user);
//userManager.RemoveUser(user);
//User userGet =  userManager.GetUserById(1);
//User userGet = userManager.GetUserByName("tangseng");

//ICollection<User> list = userManager.GetUsers();
//foreach( User userGet in list)
//{
//    Console.WriteLine(userGet.Username);
//    Console.WriteLine(userGet.Id);
//}
//Console.WriteLine(userGet.Username);
//Console.WriteLine(userGet.Id);

bool pass1 = userManager.VerifyUser("kangkang", "kangkang");
bool pass2 = userManager.VerifyUser("kangkang1", "kangkang");
Console.WriteLine(pass1);
Console.WriteLine(pass2);
Console.ReadKey();
}
}
}



阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: