C# FluentNHibernate 連線mysql資料庫
阿新 • • 發佈:2019-02-04
首先需要安裝FluentNHibernate包,右鍵工程檔案
右鍵專案工程,如下圖,在開啟的視窗中下載NHibernate包,並安裝。
程式程式碼:
連線資料庫:
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 資料庫
{
class NHibernateHelper
{
private static ISessionFactory sessionFactory = null;
private static void InitializeSessionFactory()
{
sessionFactory = Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(db => db
.Server("127.0.0.1")
.Database("mydb" )
.Username("root")
.Password("")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateHelper>())
.BuildSessionFactory();
}
private static ISessionFactory SessionFactory
{
get
{
if (sessionFactory == null)
{
InitializeSessionFactory();
}
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 資料庫.DB
{
class User
{
public virtual int id { get; set; }
public virtual string account { get; set; }
public virtual string password { get; set; }
}
}
對映類
using FluentNHibernate.Mapping;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 資料庫.DB
{
class UserMap:ClassMap<User>
{
public UserMap() {
this.Id(db => db.id).Column("id");
this.Map(db => db.account).Column("account");
this.Map(db => db.password).Column("password");
this.Table("user");
}
}
}
建立資料庫操作類
using NHibernate;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 資料庫.DB
{
class UserManage
{
public static UserManage Instance = new UserManage();
/// <summary>
/// 通過賬號和密碼檢視使用者是否存在
/// </summary>
/// <param name="uName">賬號</param>
/// <param name="psw">密碼</param>
/// <returns></returns>
public User Login(string uName, string psw)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction ita = session.BeginTransaction())
{
var iq = session.QueryOver<User>().Where(user => user.account == uName && user.password == psw);
IList<User> res = iq.List();
if (res.Count > 0)
{
return res[0];
}
}
}
return null;
}
/// <summary>
/// 通過賬號和密碼新增新的使用者
/// </summary>
/// <param name="account">賬號</param>
/// <param name="password">密碼</param>
/// <returns></returns>
public bool add(string account, string password)
{
bool flag = false;
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction ita = session.BeginTransaction())
{
User user = new User();
user.account = account;
user.password = password;
Object obj = session.Save(user);
ita.Commit();
if (obj != null)
{
flag = true;
}
}
}
return flag;
}
/// <summary>
/// 通過賬號刪除使用者
/// </summary>
/// <param name="account">賬號</param>
/// <param name="password">密碼</param>
/// <returns></returns>
public bool Delete(string account, string password)
{
bool flag = false;
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction ita = session.BeginTransaction())
{
try
{
session.Delete("From User Where account='" + account + "' and password");
ita.Commit();
flag = true;
}
catch (Exception)
{
flag = false;
}
}
}
return flag;
}
/// <summary>
/// 通過賬號和舊的密碼更新新的密碼
/// </summary>
/// <param name="oldAccount">賬號</param>
/// <param name="oldPassword">舊的密碼</param>
/// <param name="mewPassword">新的密碼</param>
/// <returns></returns>
public bool Updata(string oldAccount, string oldPassword,string newPassword)
{
bool flag = false;
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction ita = session.BeginTransaction())
{
try
{
string sql = "UPDATE user SET password='" + newPassword + "' WHERE (account='"+oldAccount+"' and password='"+oldPassword+"')";
ISQLQuery query = session.CreateSQLQuery(sql);
int ret=query.ExecuteUpdate();
Console.WriteLine("updata res="+ret);
ita.Commit();
flag = true;
}
catch (Exception)
{
flag = false;
}
}
}
return flag;
}
}
}
程式執行結果圖