当前位置:Gxlcms > 数据库问题 > Abp.NHibernate连接PostgreSQl数据库

Abp.NHibernate连接PostgreSQl数据库

时间:2021-07-01 10:21:17 帮助过:18人阅读

 


初次接触Abp框架,其框架中封装的操作各类数据的方法还是很好用的,本人还在进一步的学习当中,并将利用abp.NHibernate类库操作PostgreSQL数据的相关方法做一记录,不足之处让评论指点扔砖。

话不多说,直接开干:

1、vs 新建一个项目,(窗体或者控制台程序或者测试程序)

2、NuGet 获取类库(adp.NHibernate)

技术分享图片

还需安装一个pgSQl 对应的驱动

技术分享图片

3、新建一个继承AbpModule的类,用于配置数据库连接信息和实体映射的相关信息

  1. <span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Reflection;
  2. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Abp.Configuration.Startup;
  3. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Abp.Modules;
  4. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Abp.NHibernate;
  5. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> FluentNHibernate.Cfg.Db;
  6. </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
  7. * 命名空间: abpPgtest
  8. * 功 能: 配置数据库
  9. * 类 名: NhHibernateModel
  10. * 作 者: 东腾
  11. * 时 间: 2018/1/29 17:04:27
  12. </span><span style="color: #008000;">*/</span>
  13. <span style="color: #0000ff;">namespace</span><span style="color: #000000;"> abpPgtest
  14. {
  15. [DependsOn(</span><span style="color: #0000ff;">typeof</span><span style="color: #000000;">(AbpNHibernateModule))]
  16. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> NhHibernateModel:AbpModule
  17. {
  18. </span><span style="color: #008000;">//</span><span style="color: #008000;">重写PreInitialize方法</span>
  19. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">override</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> PreInitialize()
  20. {
  21. </span><span style="color: #0000ff;">var</span> pgStr = <span style="color: #800000;">"</span><span style="color: #800000;">Server=localhost;Port=5432;Database=DTDB;User Id=DT;Password=DT</span><span style="color: #800000;">"</span><span style="color: #000000;">;
  22. </span><span style="color: #0000ff;">var</span> config =<span style="color: #000000;"> Configuration.Modules.AbpNHibernate().FluentConfiguration
  23. .Database(PostgreSQLConfiguration.Standard.ConnectionString(pgStr));
  24. config.Mappings(a </span>=><span style="color: #000000;"> a.FluentMappings.AddFromAssembly(Assembly.GetEntryAssembly()));
  25. </span><span style="color: #008000;">//</span><span style="color: #008000;">base.PreInitialize();</span>
  26. <span style="color: #000000;"> }
  27. </span><span style="color: #008000;">//</span><span style="color: #008000;">重写Initialize方法</span>
  28. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">override</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> Initialize()
  29. {
  30. IocManager.RegisterAssemblyByConvention(Assembly.GetCallingAssembly());
  31. </span><span style="color: #008000;">//</span><span style="color: #008000;"> base.Initialize();</span>
  32. <span style="color: #000000;"> }
  33. }
  34. }</span>

4、新建实体和实体映射

  1. <span style="color: #0000ff;">using</span><span style="color: #000000;"> System;
  2. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;
  3. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;
  4. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Text;
  5. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Threading.Tasks;
  6. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Abp.Domain.Entities;
  7. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Abp.NHibernate.EntityMappings;
  8. </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
  9. * 命名空间: abpPgtest.testModel
  10. * 功 能: 数据库表实体及映射
  11. * 类 名: testModel
  12. * 作 者: 东腾
  13. * 时 间: 2018/1/29 17:21:19
  14. </span><span style="color: #008000;">*/</span>
  15. <span style="color: #0000ff;">namespace</span><span style="color: #000000;"> abpPgtest.testModel
  16. {
  17. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> testModelMap : EntityMap<testModel><span style="color: #000000;">
  18. {
  19. </span><span style="color: #0000ff;">public</span> testModelMap():<span style="color: #0000ff;">base</span>(<span style="color: #800000;">"</span><span style="color: #800000;">dt_tb_test</span><span style="color: #800000;">"</span><span style="color: #000000;">)
  20. {
  21. </span><span style="color: #008000;">//</span><span style="color: #008000;">Id(x => x.Id).GeneratedBy.Increment();</span><span style="color: #008000;">//</span><span style="color: #008000;">数据库表中没有自增的Id时需要映射一个Id</span>
  22. Map(x =><span style="color: #000000;"> x.Company);
  23. Map(x </span>=><span style="color: #000000;"> x.Name);
  24. </span><span style="color: #008000;">//</span><span style="color: #008000;">References<userModel>(a => a.Id).Not.LazyLoad().Column("外键ID");</span><span style="color: #008000;">//</span><span style="color: #008000;">数据库中有关联表时使用</span>
  25. <span style="color: #000000;">
  26. }
  27. }
  28. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> testModel:Entity<<span style="color: #0000ff;">int</span>><span style="color: #000000;">
  29. {
  30. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">virtual</span> <span style="color: #0000ff;">int</span> Id { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  31. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">virtual</span> <span style="color: #0000ff;">string</span> Name { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  32. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">virtual</span> <span style="color: #0000ff;">string</span> Company { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  33. }
  34. }</span>

5、数据库中新建表 dt_tb_test

技术分享图片

 

6、注册并初始化abp连接

  1. <span style="color: #0000ff;">var</span> bootstrapper = AbpBootstrapper.Create<NhHibernateModel><span style="color: #000000;">();
  2. bootstrapper.Initialize();
  3. </span><span style="color: #0000ff;">var</span> resp = bootstrapper.IocManager.Resolve<IRepository<testModel>>();

7、向数据库中添加数据

  1. <span style="color: #008000;">//</span><span style="color: #008000;">添加数据</span>
  2. <span style="color: #0000ff;">var</span> model = <span style="color: #0000ff;">new</span><span style="color: #000000;"> testModel
  3. {
  4. Name </span>= <span style="color: #800000;">"</span><span style="color: #800000;">东腾</span><span style="color: #800000;">"</span><span style="color: #000000;">,
  5. Company </span>= <span style="color: #800000;">"</span><span style="color: #800000;">东腾科技</span><span style="color: #800000;">"</span><span style="color: #000000;">
  6. };
  7. resp.Insert(model);</span>

打开数据库查看结果:

技术分享图片

 

 8、更新数据

  1. <span style="color: #008000;">//</span><span style="color: #008000;">更新数据</span>
  2. <span style="color: #0000ff;">var</span> m = resp.Get(<span style="color: #800080;">1</span><span style="color: #000000;">);
  3. m.Name </span>= <span style="color: #800000;">"</span><span style="color: #800000;">东腾1</span><span style="color: #800000;">"</span><span style="color: #000000;">;
  4. resp.Update(m);</span>

查看结果

技术分享图片

9、查询数据

 查询所有的数据 

  1. <span style="color: #0000ff;">var</span> allList = resp.GetAllList();

技术分享图片

按照条件进行查询

技术分享图片

10、删除数据(可以根据多种方式进行删除,用id或者where条件进行删除)

  1. <span style="color: #008000;">//</span><span style="color: #008000;">删除数据,更具where条件删除</span>
  2. Expression<Func<testModel, <span style="color: #0000ff;">bool</span>>> <span style="color: #0000ff;">where</span> = a =>a.Id==<span style="color: #800080;">3</span><span style="color: #000000;">;
  3. resp.Delete(</span><span style="color: #0000ff;">where</span>);

id为3的一条数据被删除

技术分享图片

11、总结:abp.NHibernate只是ABP中对NHIbernate的一个封装,只要正确注册和访问数据库,其余的就是ORM操作数据库,就简单了。其他的关系型数据都用类似的做法即可。

Abp.NHibernate连接PostgreSQl数据库

标签:thread   记录   lazy   实体   postgres   name   update   mes   inf   

人气教程排行