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操做數據庫,就簡單了。其餘的關係型數據都用相似的作法便可。