Abp.NHibernate鏈接PostgreSQl數據庫

Abp.NHibernate動態庫鏈接PostgreSQl數據庫數據庫

 


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

話很少說,直接開幹:app

一、vs 新建一個項目,(窗體或者控制檯程序或者測試程序)框架

二、NuGet 獲取類庫(adp.NHibernate)ide

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

三、新建一個繼承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();
        }
    }
}

四、新建實體和實體映射spa

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

五、數據庫中新建表 dt_tb_testcode

 

六、註冊並初始化abp鏈接blog

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

七、向數據庫中添加數據

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

打開數據庫查看結果:

 

 八、更新數據

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

查看結果

九、查詢數據

 查詢全部的數據 

var allList = resp.GetAllList();

按照條件進行查詢

十、刪除數據(能夠根據多種方式進行刪除,用id或者where條件進行刪除)

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

id爲3的一條數據被刪除

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

相關文章
相關標籤/搜索