如何在.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了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。