最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在.NET Core應(yīng)用中使用NHibernate詳解

 更新時間:2018年08月03日 10:15:57   作者:beginor  
NHibernate 是一個基于.Net 的針對關(guān)系型數(shù)據(jù)庫的對象持久化類庫。下面這篇文章主要給大家介紹了關(guān)于如何在.NET Core應(yīng)用中使用NHibernate的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

Nhibernate 來源于非常優(yōu)秀的基于Java的Hibernate 關(guān)系型持久化工具。NHibernate 最近發(fā)布了 5.1.3 版本, 支持 .NET Standard 2.0 , 這意味著可以在 .NET Core 2.0 應(yīng)用中使用, 本文就已 WebAPI 應(yīng)用為例, 介紹一下如何在 .NET Core 應(yīng)用中如何使用 NHibernate 。下面話不多說了,來一起看看詳細(xì)的介紹的吧

使用方法如下:

1、 新建一個基于 .NET Core 的 Web API應(yīng)用, 命令如下:

mkir WebApiTest
cd WebApiTest/
dotnet new webapi

2、 添加 NHibernate 包以及對應(yīng)的數(shù)據(jù)庫驅(qū)動程序(以 Npgsql 為例):

dotnet add pakcage NHibernate
dotnet add package NHibernate.NetCore
dotnet add package Npgsql

現(xiàn)在打開項目文件 WebApiTest.csproj , 可以看到已經(jīng)添加了這些包:

 <ItemGroup>
 <PackageReference Include="Microsoft.AspNetCore.App" />
 <PackageReference Include="NHibernate" Version="5.1.3" />
 <PackageReference Include="NHibernate.NetCore" Version="1.0.1" />
 <PackageReference Include="NpgSql" Version="4.0.2" />
 </ItemGroup>

3、 在項目中新建一個 Models 目錄, 并創(chuàng)建實體類以及對應(yīng)的 xml 映射文件, 代碼如下:

namespace WebApiTest.Models {

 public class GpsPosition {
 public virtual long Id { get; set; }
 public virtual string UserAgent { get; set;}
 public virtual long? Timestamp { get; set; }
 public virtual float? Latitude { get; set; }
 public virtual float? Longitude { get; set; }
 public virtual float? Accuracy { get; set; }
 public virtual float? Altitude { get; set; }
 public virtual float? AltitudeAccuracy { get; set; }
 public virtual float? Heading { get; set; }
 public virtual float? Speed { get; set; }
 public virtual string Tag { get; set; }
 }
}

對應(yīng)的 xml 映射文件如下:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns="urn:nhibernate-mapping-2.2"
 namespace="WebApiTest.Models"
 assembly="WebApiTest">
 <class name="GpsPosition" schema="public" table="gps_position">
 <id name="Id" column="id" type="long">
 <generator class="sequence">
 <param name="sequence">public.gps_position_id_seq</param>
 </generator>
 </id>
 <property name="UserAgent" column="user_agent" type="string" />
 <property name="Timestamp" column="timestamp" type="long" />
 <property name="Latitude" column="latitude" type="float" />
 <property name="Longitude" column="longitude" type="float" />
 <property name="Accuracy" column="accuracy" type="float" />
 <property name="Altitude" column="altitude" type="float" />
 <property name="AltitudeAccuracy" column="altitude_accuracy" type="float" />
 <property name="Heading" column="heading" type="float" />
 <property name="Speed" column="speed" type="float" />
 <property name="Tag" column="tag" type="string" />
 </class>
</hibernate-mapping>

這些都是 NHibernate 的常規(guī)做法, 因此不做過多介紹, 不熟悉的可以查閱 NHIbernate 的相關(guān)文檔。

4、 將 xml 文件編譯為嵌入的資源, 打開項目文件 WebApiTest.csproj , 添加一個 ItemGroup 節(jié)點:

<ItemGroup>
 <None Remove="Models/*.hbm.xml" />
 <EmbeddedResource Include="Models/*.hbm.xml" />
</ItemGroup>

5、 創(chuàng)建 NHibernate 的配置文件, 并設(shè)置為復(fù)制到輸出目錄:

<?xml version="1.0" encoding="UTF-8"?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
 <session-factory>
 <property name="connection.connection_string">server=localhost;database=test_db;user id=postgres;password=postgres;</property>
 <property name="dialect">NHibernate.Dialect.PostgreSQL83Dialect</property>
 <property name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property>
 <property name="show_sql">true</property>
 <property name="format_sql">true</property>
 <property name="adonet.batch_size">10</property>
 <mapping assembly="NaturalReserveApi" />
 </session-factory>
</hibernate-configuration>

打開項目文件, 添加 ItemGroup 節(jié)點, 內(nèi)容如下:

<ItemGroup>
 <Content Update="hibernate.config">
 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 </Content>
</ItemGroup>

6、 修改 Startup.cs 文件, 將 NHibernate 集成到 .NET Core 內(nèi)置的依賴注入框架中:

6.1、 修改 Startup.cs 的 using 部分, 添加下面的語句:

using Microsoft.Extensions.Logging;
using NHibernate.NetCore;

6.2、 修改 Startup.cs 的構(gòu)造函數(shù), 代碼如下:

public Startup(
 IConfiguration configuration,
 ILoggerFactory factory
) {
 Configuration = configuration;
 // 將內(nèi)置的日志組件設(shè)置為 NHibernate 的日志組件
 factory.UseAsHibernateLoggerFactory();
}

6.3、 修改 ConfigureServices 方法, 添加 NHibernate 相關(guān)的服務(wù):

public void ConfigureServices(IServiceCollection services) {
 // nhibernate 配置文件的路徑
 var path = System.IO.Path.Combine(
  AppDomain.CurrentDomain.BaseDirectory,
  "hibernate.config"
 );
 // 添加 NHibernate 相關(guān)的服務(wù)
 services.AddHibernate(path);
 services.AddMvc()
  .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

7、 修改默認(rèn)的 ValuesController.cs , 注入并使用 NHibernate:

7.1、 修改構(gòu)造函數(shù), 注入 ISessionFactory :

public ValuesController(ISessionFactory factory) {
 this.factory = factory;
}

7.2、 修改 Get 方法, 使用 NHibernate 進(jìn)行查詢:

// GET api/values
[HttpGet]
public ActionResult<IEnumerable<GpsPosition>> Get() {
 using (var session = factory.OpenSession()) {
  var query = session.Query<GpsPosition>();
  return query.ToList();
 }
}

8、 編譯并運行:

dotnet run

之后可以看到類似這樣的 NHibernate 初始化信息:

Using launch settings from ~/Projects/WebApiTest/Properties/launchSettings.json...
info: NHibernate.Cfg.Environment[0]
  NHibernate 5.1.3 (assembly 5.1.0.0)
info: NHibernate.Cfg.Environment[0]
  hibernate-configuration section not found in application configuration file
info: NHibernate.Cfg.Environment[0]
  Bytecode provider name : lcg
info: NHibernate.Cfg.Environment[0]
  Using reflection optimizer
dbug: NHibernate.Cfg.Configuration[0]
......
Hosting environment: Development
Content root path: ~/Projects/WebApiTest
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

看到這些信息, 就表示已經(jīng)可以正常的使用 NHibernate 了。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Asp.Net使用Npoi導(dǎo)入導(dǎo)出Excel的方法

    Asp.Net使用Npoi導(dǎo)入導(dǎo)出Excel的方法

    這篇文章主要介紹了Asp.Net使用Npoi導(dǎo)入導(dǎo)出Excel的方法,采用該方法在導(dǎo)出Excel的時候不需要office組件的支持,而在導(dǎo)入Excel的時候采用OleDb的方式,需要office組件的支持。是一個非常實用的技巧,需要的朋友可以參考下
    2014-09-09
  • mvc上傳到美橙云虛擬機系列問題的解決方法

    mvc上傳到美橙云虛擬機系列問題的解決方法

    這篇文章主要為大家詳細(xì)介紹了mvc上傳到美橙云虛擬機系列問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • ASP.NET使用My97DatePicker日期控件實例

    ASP.NET使用My97DatePicker日期控件實例

    這篇文章主要為大家詳細(xì)介紹了ASP.NET使用My97DatePicker日期控件實例,如何使用My97DatePicker日期控件,本文為大家介紹,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Asp.Net性能優(yōu)化技巧匯總

    Asp.Net性能優(yōu)化技巧匯總

    這篇文章主要介紹了Asp.Net性能優(yōu)化技巧匯總,非常實用的歸納總結(jié),需要的朋友可以參考下
    2014-07-07
  • ashx文件的使用小結(jié)

    ashx文件的使用小結(jié)

    這篇文章主要是對ashx文件的使用進(jìn)行了介紹。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • 如何取得Repeater控件選擇的項目及注意事項

    如何取得Repeater控件選擇的項目及注意事項

    Repeater控件,每個item前有一個CheckBox,把選擇的item列顯出來,有兩個地方需要注意的,就是CheckBox與Label,這個Label是隨你需要獲取的內(nèi)容而變化喔。如你想獲取Nickname,那你需要把綁定的的內(nèi)容放在Label上
    2013-01-01
  • 淺談asp.net Forms身份驗證詳解

    淺談asp.net Forms身份驗證詳解

    這篇文章主要介紹了淺談asp.net Forms身份驗證詳解 ,這種方法可以輕松的保持用戶的登錄狀態(tài)(如果用戶想這樣),便捷的用戶授權(quán)配置,增強的安全性,有興趣的可以了解一下。
    2016-12-12
  • 手把手教你AspNetCore WebApi認(rèn)證與授權(quán)的方法

    手把手教你AspNetCore WebApi認(rèn)證與授權(quán)的方法

    這篇文章主要介紹了手把手教你AspNetCore WebApi認(rèn)證與授權(quán)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • ASP.NET Core中自定義路由約束的實現(xiàn)

    ASP.NET Core中自定義路由約束的實現(xiàn)

    這篇文章主要介紹了ASP.NET Core中自定義路由約束的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Asp.net中使用DapperExtensions和反射來實現(xiàn)一個通用搜索

    Asp.net中使用DapperExtensions和反射來實現(xiàn)一個通用搜索

    這篇文章主要介紹了Asp.net中使用DapperExtensions和反射來實現(xiàn)一個通用搜索功能,非常不錯,具有參考解決價值,需要的朋友可以參考下
    2017-03-03

最新評論

牡丹江市| 辰溪县| 东兰县| 福鼎市| 外汇| 武定县| 灵璧县| 汕头市| 阆中市| 定西市| 工布江达县| 大邑县| 白河县| 会理县| 三亚市| 宣恩县| 巨野县| 临安市| 四子王旗| 杭州市| 弥勒县| 那坡县| 信丰县| 兴安盟| 班玛县| 安龙县| 大悟县| 延吉市| 延边| 宁乡县| 苏尼特左旗| 双江| 双柏县| 贺兰县| 白玉县| 夏津县| 昌平区| 九龙县| 巴彦县| 玛沁县| 贵港市|