C#中通过映射对MySQL数据进行操作

                                首先,C#中通过映射对MySQL数据进行操作需要导入:FluentNHibernate.dll和NHibernate.dll这两个程序集;引用方法:
选择联机搜索,然后点击安装就可以了;
右键添加新项目,添加一个NhibernateHelper类用来打开MySQL会话,代码如下;
    class NhibernateHelper
    {
        private static ISessionFactory sessionFactory = null;
        private static void InitSessionFactory()
        {
		//FluentConfiguration fConfig = Fluently.Configure();
            //MySQLConfiguration mySQLConfig=MySQLConfiguration.Standard.ConnectionString(db => db.Server("localhost").Database("taidou").Username("root").Password("root"));
            //sessionFactory=fConfig.Database(mySQLConfig).Mappings(x => x.FluentMappings.AddFromAssemblyOf<NhibernateHelper>()).BuildSessionFactory();
            sessionFactory = Fluently.Configure().Database(MySQLConfiguration.Standar   d.ConnectionString(db=>db.Server("localhost").Database("taidou").Username("root").Password("root"))).Mappings(x=>x.FluentMappings.AddFromAssemblyOf<NhibernateHelper>()).BuildSessionFactory();//连接MySQL数据库
        }
        private static ISessionFactory SessionFactory {
            get {
                if (sessionFactory == null)
                    InitSessionFactory();
                return sessionFactory;
            }
        }
        public static ISession OpenSession()
        {
            return SessionFactory.OpenSession();   //打开Session会话
        }
    }
然后再添加一个对数据库数据进行操作的类: TestUserManager
    class TestUserManager
    {
        public IList<TestUser> GetAllUser()    //获得用户表中的所有数据
        {
            using (var session = NhibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var userList = session.QueryOver<TestUser>();
                    transaction.Commit();   //提交操作
                    return userList.List();
                }
            }
        }
        public IList<TestUser> GetUserByUsername(string username)    //根据username查找数据
        {
            using (var session = NhibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var userList = session.QueryOver<TestUser>().Where(user => user.Username == username);
                    transaction.Commit();
                    return userList.List();
                }
            }
        }
        public void SaveUser(TestUser user)   //添加user并保存到数据库,相当于添加数据;
        {
            using (var session = NhibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    session.Save(user);
                    transaction.Commit();
                }
            }
        }
        public void UpdateUser(TestUser user)   //更新修改后的数据
        {
            using (var session = NhibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    session.Update(user);
                    transaction.Commit();
                }
            }
        } 
        public void DeleteById(int id)     //根据ID删除数据;
        {
            using (var session = NhibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    TestUser tu = new TestUser();
                    tu.Id = id;
                    session.Delete(tu);
                    transaction.Commit();
                }
            }
        }
    }
添加一个类,类名为TestUser,其中的方法要与数据库表中字段一致,方便映射:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyServer.Model
{
    class TestUser
    {
        public virtual int Id { get; set; }
        public virtual string Username { get; set; }
        public virtual string Password { get; set; }
        public virtual int Age { get; set; }
    }
}
再添加一个映射类TestUserMap,需要用到命名空间:using FluentNHibernate.Mapping;
using FluentNHibernate.Mapping;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyServer.Model.Mapping
{
    class TestUserMap:ClassMap<TestUser>
    {
        public TestUserMap()//这里的x时textuser对象;
        {
            Id(x => x.Id).Column("Id");//设置Id属性为主键,column为匹配数据库字段
            Map(x => x.Username).Column("username");
            Map(x => x.Password).Column("password");
            Map(x => x.Age).Column("age");
            Table("testuser");
        }
    }
}
好了,暂时就这么多方法,后续再更新,用的时候来学习一下就不会忘记啦!!!




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值