如何在.NET Core应用中使用NHibernate详解
前言
Nhibernate来源于非常优秀的基于Java的Hibernate关系型持久化工具。NHibernate最近发布了5.1.3版本,支持.NETStandard2.0,这意味着可以在.NETCore2.0应用中使用,本文就已WebAPI应用为例,介绍一下如何在.NETCore应用中如何使用NHibernate。下面话不多说了,来一起看看详细的介绍的吧
使用方法如下:
1、新建一个基于.NETCore的WebAPI应用,命令如下:
mkirWebApiTest cdWebApiTest/ dotnetnewwebapi
2、添加NHibernate包以及对应的数据库驱动程序(以Npgsql为例):
dotnetaddpakcageNHibernate dotnetaddpackageNHibernate.NetCore dotnetaddpackageNpgsql
现在打开项目文件WebApiTest.csproj,可以看到已经添加了这些包:
3、在项目中新建一个Models目录,并创建实体类以及对应的xml映射文件,代码如下:
namespaceWebApiTest.Models{
publicclassGpsPosition{
publicvirtuallongId{get;set;}
publicvirtualstringUserAgent{get;set;}
publicvirtuallong?Timestamp{get;set;}
publicvirtualfloat?Latitude{get;set;}
publicvirtualfloat?Longitude{get;set;}
publicvirtualfloat?Accuracy{get;set;}
publicvirtualfloat?Altitude{get;set;}
publicvirtualfloat?AltitudeAccuracy{get;set;}
publicvirtualfloat?Heading{get;set;}
publicvirtualfloat?Speed{get;set;}
publicvirtualstringTag{get;set;}
}
}
对应的xml映射文件如下:
public.gps_position_id_seq
这些都是NHibernate的常规做法,因此不做过多介绍,不熟悉的可以查阅NHIbernate的相关文档。
4、将xml文件编译为嵌入的资源,打开项目文件WebApiTest.csproj,添加一个ItemGroup节点:
5、创建NHibernate的配置文件,并设置为复制到输出目录:
server=localhost;database=test_db;userid=postgres;password=postgres; NHibernate.Dialect.PostgreSQL83Dialect NHibernate.Driver.NpgsqlDriver true true 10
打开项目文件,添加ItemGroup节点,内容如下:
Always
6、修改Startup.cs文件,将NHibernate集成到.NETCore内置的依赖注入框架中:
6.1、修改Startup.cs的using部分,添加下面的语句:
usingMicrosoft.Extensions.Logging; usingNHibernate.NetCore;
6.2、修改Startup.cs的构造函数,代码如下:
publicStartup(
IConfigurationconfiguration,
ILoggerFactoryfactory
){
Configuration=configuration;
//将内置的日志组件设置为NHibernate的日志组件
factory.UseAsHibernateLoggerFactory();
}
6.3、修改ConfigureServices方法,添加NHibernate相关的服务:
publicvoidConfigureServices(IServiceCollectionservices){
//nhibernate配置文件的路径
varpath=System.IO.Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
"hibernate.config"
);
//添加NHibernate相关的服务
services.AddHibernate(path);
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
7、修改默认的ValuesController.cs,注入并使用NHibernate:
7.1、修改构造函数,注入ISessionFactory:
publicValuesController(ISessionFactoryfactory){
this.factory=factory;
}
7.2、修改Get方法,使用NHibernate进行查询:
//GETapi/values [HttpGet] publicActionResult>Get(){ using(varsession=factory.OpenSession()){ varquery=session.Query (); returnquery.ToList(); } }
8、编译并运行:
dotnetrun
之后可以看到类似这样的NHibernate初始化信息:
Usinglaunchsettingsfrom~/Projects/WebApiTest/Properties/launchSettings.json... info:NHibernate.Cfg.Environment[0] NHibernate5.1.3(assembly5.1.0.0) info:NHibernate.Cfg.Environment[0] hibernate-configurationsectionnotfoundinapplicationconfigurationfile info:NHibernate.Cfg.Environment[0] Bytecodeprovidername:lcg info:NHibernate.Cfg.Environment[0] Usingreflectionoptimizer dbug:NHibernate.Cfg.Configuration[0] ...... Hostingenvironment:Development Contentrootpath:~/Projects/WebApiTest Nowlisteningon:https://localhost:5001 Nowlisteningon:http://localhost:5000 Applicationstarted.PressCtrl+Ctoshutdown.
看到这些信息,就表示已经可以正常的使用NHibernate了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。