许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Fluent NHibernate:对象关系映射框架入门

Fluent NHibernate:对象关系映射框架入门

阅读数 3
点赞 0
article_banner

Fluent NHibernate


如何使用Fluent NHibernate。

   首先在vs解决方案上右键,选择“管理NuGet程序包”

   Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时,Nuget能把在项目中添加、移除和更新引用的工作变得更加快捷方便。Nuget是 ASP .NET Gallery 的一员。NuGet 是免费、开源的包管理开发工具,专注于在 .NET 应用开发过程中,简单地合并第三方的组件库。当需要分享开发的工具或是库,需要建立一个Nuget package,然后把这个package放到Nuget的站点。如果想要使用别人已经开发好的工具或是库,只需要从站点获得这个package,并且安装到自己的Visual Studio项目或是解决方案里。

   NuGet能更方便地把一些dll和文件(如jquery)添加到项目中,而不需要从文件中复制拷贝。

然后在搜索栏中搜索Fluent,点击安装。

   Fluent NHibernate是依托于NHibernate的,所以,安装Fluent NHibernate会自动安装NHibernate。

Fluent NHibernate只实现了NHibernate的mapping功能,其他功能还不能替代,所以我们需要使用NHibernate来创建Session来对数据库进行管理。

using System;

   using System.Collections.Generic;

   using System.Linq;

   using System.Text;

   using System.Threading.Tasks;

   using NHibernate;

   using FluentNHibernate.Cfg;

   using FluentNHibernate.Cfg.Db;

namespace ArpgDatabase

   {

   public 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 / localhost”)

   .Database( “arpgdb”)

   .Username( “root”)

   .Password( “root”)))

   .Mappings(m => m.FluentMappings.AddFromAssemblyOf< NHibernateHelper>())

   //.ExposeConfiguration(e => e.Properties.Add(“hbm2ddl.keywords”, “none”))

   .BuildSessionFactory();

   }

private static ISessionFactory SessionFactory

   {

   get

   {

   if (sessionFactory == null )

   InitializeSessionFactory();

return sessionFactory;

   }

   }

public static ISession OpenSession()

   {

   return SessionFactory.OpenSession();

   }

   }

   }

接下来我们在数据库中创建数据,我们以MySql为例。使用Navicat For MySql进行可视化数据库管理。

   我们通过Mavicat创建一个叫做arpgdb的数据库,在数据库中创建一个叫做testuser的表,表中存在四个字段:id,username,pwd和lv

然后我们就可以创建映射类以及数据类了。

//数据类

   using System;

   using System.Collections.Generic;

   using System.Linq;

   using System.Text;

   using System.Threading.Tasks;

namespace ArpgDatabase.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 ; }

   }

   }

//映射类

   using System;

   using System.Collections.Generic;

   using System.Linq;

   using System.Text;

   using System.Threading.Tasks;

   using FluentNHibernate.Mapping;

namespace ArpgDatabase.Model.Mapping

   {

   class TestUserMap : ClassMap<TestUser >

   {

   public TestUserMap()

   {

   //1、设置ID属性为主键

   //2、x表示一个TestUser的对象

   Id(x => x.ID).Column( “id”);

   Map(x => x.Username).Column( “username”);

   Map(x => x.Password).Column( “pwd”);

   Map(x => x.Age).Column( “lv”);

   Table( “testuser”);

   }

   }

   }


   最后,我们就可以通过Session对数据库进行增删改查操作了!
 



   using ArpgDatabase;
   

   using NHibernate;
   

   using System;
   

   using System.Collections.Generic;
   

   using System.Linq;
   

   using System.Text;
   

   using System.Threading.Tasks;
 



   //提供跟登录相关的数据库操作方法
   

   class DBAccountMannger
   

   {


   //添加
   

       public static void AddAccount(string username, string password)
   

       {

           ISession isession = NHibernateHelper.OpenSession();
   

           Account ac = new Account();
   

           ac.username = username;
   

           ac.password = password;
   

           isession.Save(ac);
   

       }
 


   //查询
   

       public static Account SelectAccount(string name)
   

       {

           ISession isession = NHibernateHelper.OpenSession();
   

           IList<Account> list = isession.QueryOver<Account>().Where(x => x.username == name).List();
   

           if (list.Count > 0)
   

           {

               return list[0];
   

           }
   

           return null;
   

       }
 


   //修改
   

       public static void UpdateAccount(Account newac)
   

       {

           ISession isession = NHibernateHelper.OpenSession();
   

           using (ITransaction tran = isession.BeginTransaction())
   

           {

               Account acc = SelectAccount(newac.username);
   

               acc.username = newac.username;
   

               acc.password = newac.password;
   

               isession.Update(acc);
   

               tran.Commit();
   

           }
   

       }
 


   //删除
   

       public static void DeleteAccount(string username)
   

       {

           ISession isession = NHibernateHelper.OpenSession();
   

           using (ITransaction tran = isession.BeginTransaction())
   

           {

               Account ac = SelectAccount(username);
   

               isession.Delete(ac);
   

               tran.Commit();
   

               }
 


       }
   

   }
 


   //主类
 


    using System;
   

    using System.Collections.Generic;
   

    using System.Linq;
   

    using System.Text;
   

    using System.Threading.Tasks;
   


        class Program
   

        {

            static void Main(string[] args)
   

            {

                //增加
   

                //DBAccountMannger.AddAccount("123","123456");
   



                //查询
   

                //Account ac= DBAccountMannger.SelectAccount("123");
   

                //Console.WriteLine(ac.username);
   

                //Console.WriteLine(ac.password);
   



                //修改
   

                //DBAccountMannger.AddAccount("yi","123456");
   

                //Account ac = new Account();
   

                //ac.username = "yi";
   

                //ac.password="1";
   

                //DBAccountMannger.UpdateAccount(ac);
   

                //Account oldac = DBAccountMannger.SelectAccount("123");
   

                //Account newac = new Account();
   

                //newac.username = "123456789";
   

                //newac.password = "123456789";
   

                //DBAccountMannger.UpdateAccount(oldac, newac);
   



                //删除
   

                //DBAccountMannger.DeleteAccount("1234");
   

                Console.ReadKey();
   

            }
   

        }
   
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空