Abp.NHibernate串連PostgreSQl資料庫

來源:互聯網
上載者:User

標籤:thread   記錄   lazy   實體   postgres   name   update   mes   inf   

Abp.NHibernate動態庫串連PostgreSQl資料庫

 

初次接觸Abp架構,其架構中封裝的操作各類資料的方法還是很好用的,本人還在進一步的學習當中,並將利用abp.NHibernate類庫操作PostgreSQL資料的相關方法做一記錄,不足之處讓評論指點扔磚。

話不多說,直接開幹:

1、vs 建立一個項目,(表單或者控制台程式或者測試程式)

2、NuGet 擷取類庫(adp.NHibernate)

還需安裝一個pgSQl 對應的驅動

3、建立一個繼承AbpModule的類,用於設定資料庫串連資訊和實體映射的相關資訊

using System.Reflection;using Abp.Configuration.Startup;using Abp.Modules;using Abp.NHibernate;using FluentNHibernate.Cfg.Db;/*** 命名空間: abpPgtest* 功 能: 設定資料庫* 類 名: NhHibernateModel* 作 者:  東騰* 時 間: 2018/1/29 17:04:27 */namespace abpPgtest{    [DependsOn(typeof(AbpNHibernateModule))]    public class NhHibernateModel:AbpModule    {        //重寫PreInitialize方法        public override void PreInitialize()        {            var pgStr = "Server=localhost;Port=5432;Database=DTDB;User Id=DT;Password=DT";            var config = Configuration.Modules.AbpNHibernate().FluentConfiguration                .Database(PostgreSQLConfiguration.Standard.ConnectionString(pgStr));            config.Mappings(a => a.FluentMappings.AddFromAssembly(Assembly.GetEntryAssembly()));            //base.PreInitialize();        }        //重寫Initialize方法        public override void Initialize()        {            IocManager.RegisterAssemblyByConvention(Assembly.GetCallingAssembly());           // base.Initialize();        }    }}

4、建立實體和實體映射

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Abp.Domain.Entities;using Abp.NHibernate.EntityMappings;/*** 命名空間: abpPgtest.testModel* 功 能: 資料庫表實體及映射* 類 名: testModel* 作 者:  東騰* 時 間: 2018/1/29 17:21:19 */namespace abpPgtest.testModel{    public class testModelMap : EntityMap<testModel>    {        public testModelMap():base("dt_tb_test")        {            //Id(x => x.Id).GeneratedBy.Increment();//資料庫表中沒有自增的Id時需要映射一個Id            Map(x => x.Company);            Map(x => x.Name);            //References<userModel>(a => a.Id).Not.LazyLoad().Column("外鍵ID");//資料庫中有關聯表時使用        }    }    public class testModel:Entity<int>    {        public virtual int Id { get; set; }        public virtual  string Name { get; set; }        public virtual  string Company { get; set; }    }}

5、資料庫中建立表 dt_tb_test

 

6、註冊並初始化abp串連

var bootstrapper = AbpBootstrapper.Create<NhHibernateModel>();bootstrapper.Initialize();var resp = bootstrapper.IocManager.Resolve<IRepository<testModel>>();

7、向資料庫中添加資料

 //添加資料            var model = new testModel            {                Name = "東騰",                Company = "東騰科技"            };            resp.Insert(model);

開啟資料庫查看結果:

 

 8、更新資料

 //更新資料            var m = resp.Get(1);            m.Name = "東騰1";            resp.Update(m);

查看結果

9、查詢資料

 查詢所有的資料 

var allList = resp.GetAllList();

按照條件進行查詢

10、刪除資料(可以根據多種方式進行刪除,用id或者where條件進行刪除)

           //刪除資料,更具where條件刪除            Expression<Func<testModel, bool>> where = a =>a.Id==3;            resp.Delete(where);

id為3的一條資料被刪除

11、總結:abp.NHibernate只是ABP中對NHIbernate的一個封裝,只要正確註冊和訪問資料庫,其餘的就是ORM操作資料庫,就簡單了。其他的關係型資料都用類似的做法即可。

Abp.NHibernate串連PostgreSQl資料庫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.