Fluent NHibernate

C#+FluentNHibernate+SQL2008 完整实现简单示例 FluentNHibernate :2.0.3.0 NHibernate:4.1.0.4000 立即下载

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();
        }
    }

Fluent nHibernate Fluent nHibernate,简化nHibernate工作量的好工具。 nHibernate相信用C#跟数据库打交道的多少知道一些,用过nHibernate的对其中nHibernate的XML配置文件的繁杂应该深有印象。Fluent nHibernate就是为简化nHibernate的配置而诞生,使用Fluent nHibernate可以使nHibernate的配置工作用C#代码完成,而无需用实体的XML文件,极大的方便是用nHibernate的工作量。 本文件于2012-5-4下载于Fluent nHibernate官方网站,网址http://www.fluentnhibernate.org/ 立即下载

相关推荐

ECB oracle——attack

基于ECB oracle的攻击方案前言什么是ECB方案步骤1.确定块大小和明文大小2.暴力破解求明文脚本代码 前言 参考文章:Breaking ECB by prepending your own message. 环境地址:ECB oracle 什么是ECB 分组密码中AES的一种模式(其他还有:CBC、ECB、CTR、OCF、CFB)如图每一块加密是分开的。 方案步骤 1.确定块大小和明文大小 先用一个字符"a"去encrypt返回32个字节的数据(64位16进制)依次用"aa",“aaa”…去en

weixin_44617902的博客 1311

Qt-Advanced-Docking-System核心组件详解:从ContainerWidget到SectionContent

Qt-Advanced-Docking-System是一款功能强大的Qt高级停靠系统,它为开发者提供了灵活且高效的窗口管理解决方案。本文将深入剖析该系统的核心组件,帮助新手和普通用户快速掌握其架构与使用方法。 ## 系统架构概览 Qt-Advanced-Docking-System的核心代码组织在[AdvancedDockingSystem/](https://link.gitcode.com

gitblog_00054的博客 579

linux下autocad完美替代品bricscad的安装运行

前言 在Linux平台下,能完美兼容.dwg文件的软件并不多。 虽然国产的中望和浩辰为适配uos操作系统,近期都推出了linux版本,但目前好像还没有对应的破姐流出。(如果有的话请私信我或留下评论) 然而有了这一款源自比利时的软件——bricscad,linux下查看和编辑.dwg文件再也不是噩梦了! 安装pj 资源链接:https://pan.baidu.com/s/1dC7zarlqwuO5fa4CBL_KGQ 提取码:24j6 1.下载对应的压缩包,解压并安装其中对应的deb或rpm软件包。 2.在C

weixin_35259117的博客 4486

fluent求平均温度、最高低温度和平均传热系数【转载】

摘自《ANSYS FLUENT技术基础与工程应用:流动传热与环境污染控制领域》 一、平均温度的计算: 双击导航栏中Result下方的Report进入Report任务页面,双击其中的Volume Intergrals。在该对话框中的Report Type下选中Volume-Average,在Field Variable下拉菜单选中Temperature,在Cell Zones中选中...

asd165654的博客 8274

告别Modern Standby烦恼:在Windows 11中手动启用S3睡眠模式的完整指南

本文详细介绍了如何在Windows 11中手动启用S3睡眠模式,解决Modern Standby(S0模式)导致的笔记本睡眠后耗电问题。通过注册表修改、电源选项调整、BIOS设置等步骤,帮助用户恢复传统深度睡眠功能,显著提升电池续航表现。

weixin_30271335的博客 559

从Power到HO:一文搞懂主流脑图谱在DPABI里怎么选,让你的rs-fMRI分析更精准

本文深入解析了rs-fMRI分析中主流脑图谱(如Power、HO、AAL等)在DPABI中的科学选择策略,帮助研究者根据不同的神经科学研究目标优化分析流程。从解剖学图谱到功能连接图谱的特性对比,到DPABI实操中的多图谱分析工作流,提供了全面的方法论指导,助力提升静息态功能磁共振成像(rs-fMRI)研究的精准度和可重复性。

weixin_30654583的博客 404

Fluent NHibernate 系列(一)Fluent Nhibernate简介

关于Fluent NHibernate(官网下载 http://fluentnhibernate.org/ Fluent NHibernate能够取代标准的XML映射文件(.hbm.xml files)。和传统的XML文件相比,Fluent NHibernate能够让你用强类型的C#代码来书写。因此,这样更容易重构,阅读,而且语句更加的精炼。   同时Fluent NHiber

Arwind的专栏 2516

【教程4>第5章>第19节】基于Gardner环的位同步系统MATLAB仿真与带时偏基带数据导出

由于在FPGA中,时偏的影响主要是由系统收发两端晶振的不同步带来的,所以在仿真测试阶段,很难直接通过FPGA来模拟这个因素,所以我们采用MATLAB模拟带时偏的基带输入信号,并将其导出,由FPGA调用作为测试信号源。可以看到,同步之后(图3)相对于带时偏的基带信号(图2),其更接近标准的数据(图1),且抖动较小。订阅过的朋友可以复习下这个课程,没有订阅的朋友,也可以直接复制如下的程序进行仿真测试。上述程序中,加入时偏的基带信号,通过子函数。同步之后,可以恢复出标准的QPSK星座图。

FPGA/MATLAB学习教程/源码/项目合作开发 522

Fluent NHibernate入门

一.Fluent NHibernate是什么。Fluent NHibernate提供了一个方法让你不再需要去写NHibernate的标准映射文件(.hbm.xml),而是可以把你的映射文件都使用C#来写。这样做,方便了我们的代码重构,提供了代码的易读性,并精简了项目代码。它还包含了如下几个工具:Fluent NHibernate是NHibernate核心代码的扩展,完全兼容NHibernate2....

Pandora12138的博客 798

使用 Python 爬虫抓取 IMDb 电影信息 - 评分、评论与基本信息抓取教程

本文介绍了如何使用 Python 爬虫技术抓取 IMDb 电影评分、评论和基本信息。我们分别展示了通过IMDb API和两种方法抓取数据,并进行了数据存储、分析与可视化。在未来,我们还可以基于这些数据开发电影推荐系统、情感分析工具等,进一步丰富电影数据的应用场景。通过这些实践,您不仅学会了如何抓取和存储数据,还可以通过这些基础来构建自己的数据分析应用,获取更丰富的电影数据。

2201_76125261的博客 601

L2CAP 面向连接信道(CoC)在 BLE 中的应用:建立、流控与数据传输

L2CAP(逻辑链路控制与适配协议)是蓝牙协议栈中的核心层,位于基带层之上,为上层协议提供数据传输服务。在低功耗蓝牙(BLE)中,L2CAP面向连接信道(Connection-Oriented Channel, CoC) 是实现可靠数据传输的关键机制,广泛应用于健康监测、智能家居、工业控制等领域。

byte轻骑兵的技术小窝 3635

【架构之路之ORM】--FluentNHibernate之基本映射详解

在没有FluentNHibernate的情况下,如果使用NHibernate来做数据库映射,那么首先需要安装NHibernate(也就是应用Nhibernate.dll),然后创建Nhibernate.cfg.xml数据库配置文件,然后创建映射文件.xml,最后创建Session,直接对对象操作即可。虽然这样做并不困难,但是很麻烦,想象下如果数据库表有上百张,那使用这种方法映射不就很麻烦,笨重了吗

航帆远洋 1万+

【网络教程】Ubuntu有线连接消失,无法联网怎么办!(亲测有效!)

文章目录问题描述解决方案 问题描述 今天打开Ubuntu,突然发现无法连接网络,并且打开设置,发现设置里面的网络已经没有了有线连接,只有VPN设置选项,如图 解决方案 按照下列的代码执行即可! # 关闭网路 service NetworkManager stop # 删除NetworkManager缓存文件 sudo rm /var/lib/NetworkManager/NetworkManager.state # 打开网络 service NetworkManager start 运行完

XiaoqiangClub的博客 1万+

Fluent NHibernate指南:简化ORM的优雅之旅

**Fluent NHibernate** 是一个针对 [NHibernate](http://nhibernate.info/) 的扩展库,它引入了流畅接口和自动映射配置的概念,极大地简化了对象关系映射(ORM)的过程。通过Fluent NHibernate,开发者可以以一种声明式且高度可读的方式定义实体到数据库表的映射,而无需编写大量的XML映射文件。这使得NHibernate的配置更加直观、...

gitblog_00734的博客 474

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

fluent mysql_Fluent NHibernate and Mysql,SQLite,PostgreSQL

http://codeofrob.com/entries/sqlite-csharp-and-nhibernate.htmlhttps://code.google.com/archive/p/csharp-sqlite/downloadshttps://github.com/davybrion/NHibernateWorkshopMySQLsql:#my sql testDROP TABLE De...

weixin_29532927的博客 183

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Fluent NHibernate实战:从XML映射到强类型ORM的范式升级

ORM(对象关系映射)是.NET数据访问层的核心技术,其本质是解决面向对象模型与关系型数据库之间的阻抗失配问题。传统NHibernate XML映射依赖字符串配置,缺乏编译期校验,易引发运行时异常、重构风险高、维护成本陡增;而Fluent NHibernate通过C#强类型API、Lambda表达式和方法链式调用,将映射逻辑内聚于代码之中,实现编译期检查、IDE智能感知与安全重构。该方案显著提升中大型项目的可测试性、可组合性与长期可维护性,特别适用于ASP.NET WebForms向MVC迁移、遗留NHib

SailingAptech的专栏 502

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Fluent NHibernate联合主键的使用

示例 多主键的表例如map如下  public class JxPermissionMap : ClassMap     {         public JxPermissionMap()         {             Table("JX_Permission");             LazyLoad();             CompositeId().

愤怒的小鸟 1701

[原创]Fluent NHibernate之旅

ORM大家都非常熟悉了吧,我相信也有很多朋友正在用自己或者一些公开的框架,而最常用而且强大的,非Hibernate了(Net中为NHibernate),网上的文档非常多,不过在博客园中,介绍NHibernate的非常少,李哥的NHibernate系列(NHibernate之旅)不失为一个经典,对于新手的我们,需要完全掌握还需要很长一段路,对于新手来说,最初的配置是非常头大的一件事情,好在老赵推荐一...

weixin_33911824的博客 131

Fluent NHibernate example

http://www.codeproject.com/Articles/26466/Dependency-Injection-using-Spring-NET http://stackoverflow.com/questions/29767825/spring-netnhibernate-configuration http://nhbusinessobj.sourceforge.net/in...

weixin_33896069的博客 250

Fluent NHibernate之旅二--Entity Mapping

简单实体映射   使用自定义类型映射实体属性   NHibernate的实体映射(Entity Mapping)做的非常好,虽然不是完美,但一些我们经常使用的,基本上已经都支持了,而且配置也相对比较简单。好了,开始我们的体验之旅吧。   一、简单实体映射   为了配合今后的教程,我们以一个简单的电子商务平台说起。一个B2C的电子商务,我们一定需要产品和订单,因为是示例,所以尽可能的简

eqera的专栏 2100

Fluent NHibernate核心组件解析:AutoMapping如何简化实体映射

Fluent NHibernate是一款强大的ORM框架,它通过AutoMapping功能彻底改变了实体映射的开发方式。AutoMapping能够自动生成实体类与数据库表之间的映射关系,极大减少了手动编写映射代码的工作量,让开发者可以专注于业务逻辑而非重复的配置工作。本文将深入解析AutoMapping的核心原理、使用方法以及如何通过定制化配置满足复杂项目需求。 ## 一、AutoMapping

gitblog_00490的博客 561

全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)

在开发涉及到数据库的程序时,常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况,这时就需要进行数据库迁移。实现数据库迁移有很多种办法,从手动管理各个版本的ddl脚本,到实现自己的migrator,或是使用Entity Framework提供的Code First迁移功能。Entity Framework提供的迁移功能可以满足大部分人的需求,但仍会存在难以分项目管理迁移代码和容易出现"

dotNET跨平台 643
下一篇: HTTP传输
二龙湖三胖
博客等级 码龄9年 10粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值