前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#中通过映射对MySQL数据进行操作

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

作者头像
bering
发布2019-12-03 15:34:49
1.3K0
发布2019-12-03 15:34:49
举报
文章被收录于专栏:游戏开发之旅游戏开发之旅

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/CJB_King/article/details/53198870

首先,C#中通过映射对MySQL数据进行操作需要导入:FluentNHibernate.dll和NHibernate.dll这两个程序集;引用方法:

选择联机搜索,然后点击安装就可以了;

右键添加新项目,添加一个NhibernateHelper类用来打开MySQL会话,代码如下;

代码语言:javascript
复制
    class NhibernateHelper
    {
        private static ISessionFactory sessionFactory = null;
        private static void InitSessionFactory()
        {
代码语言:javascript
复制
代码语言:javascript
复制
		//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

代码语言:javascript
复制
    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,其中的方法要与数据库表中字段一致,方便映射:

代码语言:javascript
复制
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;

代码语言:javascript
复制
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");
        }
    }
}

好了,暂时就这么多方法,后续再更新,用的时候来学习一下就不会忘记啦!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-11-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档