当前位置:   article > 正文

.Net Framework 471下的SQLSugar+PostgreSQL 13的笔记_sqlsugar postgresql

sqlsugar postgresql

.Net Framework 471下的SQLSugar+PostgreSQL 13记录笔记

一、环境说明(楼主只试过以下版本的,早前试别的版本会出现Exception_WasThrow的情况,知道什么原因的可以在文章下评论):

.Net框架:.Net Framework 4.7.1
ORM框架:SQLSugar 5.0.5.3
PG包:Npgsql 4.1.10.0
数据库版本:PostgreSQL Enterprise 13

二、上面环境准备好之后,新建EF仓储实例类并继承SQLSugar的SimpleClient,如图。

public class Repository<T> : SimpleClient<T> where T : class, new()
    {
        public Repository(ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null
        {
            if (context == null)
            {
                base.Context = new SqlSugarClient(new ConnectionConfig()
                {
                    DbType = SqlSugar.DbType.PostgreSQL,
                    InitKeyType = InitKeyType.Attribute,
                    IsAutoCloseConnection = true,
                    MoreSettings = new ConnMoreSettings()
                    {
                        PgSqlIsAutoToLower = false //数据库存在大写字段的 ,需要把这个设为false ,并且实体和字段名称要一样
                    },
                    ConnectionString = "PORT=5630;DATABASE=tshoteldb;HOST=localhost;PASSWORD=postgres;USER ID=postgres"
                });

                base.Context.Aop.OnLogExecuting = (s, p) =>
                {
                    Console.WriteLine(s);
                };
            }
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

三、建立对应的实体类,这里我们建一个名为AdminInfo的实体类。

注意:[SqlSugar.SugarTable(“表名”)]建议都强制加上,以及数据库字段的[SqlSugar.SugarColumn(ColumnName = “字段名”)]也强制加上,否则容易报“关系‘xxxx’不存在…”等类似的错。

[SqlSugar.SugarTable("admininfo")]
        public class AdminInfo
        {
            [SqlSugar.SugarColumn(ColumnName = "AdminAccount")]
            public string AdminAccount { get; set; }
            [SqlSugar.SugarColumn(ColumnName = "AdminPassword")]
            public string AdminPassword { get; set; }
            [SqlSugar.SugarColumn(ColumnName = "AdminType")]
            public string AdminType { get; set; }
            [SqlSugar.SugarColumn(ColumnName = "AdminName")]
            public string AdminName { get; set; }
            [SqlSugar.SugarColumn(ColumnName = "IsAdmin")]
            public int IsAdmin { get; set; }
            [SqlSugar.SugarColumn(ColumnName = "DeleteMk")]
            public int DeleteMk { get; set; }
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

四、接下来就可以开始写业务逻辑了,我们这里建一个名为AdminService并且继承Repository,<>里对应的是要操作的实体类名称。

public class AdminService : Repository<AdminInfo>
        {
            public List<AdminInfo> GetLists()
            {
                var list = base.GetList(a => a.DeleteMk != 1);

                return list;
            }
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

五、最后进行调用。

static void Main(string[] args)
        {
            Console.WriteLine(string.Join("\n", new AdminService().GetLists().Select(a => a.AdminAccount)));
            Console.ReadKey();
        }
  • 1
  • 2
  • 3
  • 4
  • 5

六、运行结果:

在这里插入图片描述

七、总结:

​ 其实SQLSugar已经做了大部分与数据库打交道的工作了,我们只是稍微改下配置即可,但是SQLSugar版本要与Npgsql版本要兼容匹配,否则会出现各种各样的报错,之前就因为这样烦恼了楼主两天时间,唉,归咎只是自己太菜。最后,如果大家知道其他SQLSugar版本和Npgsql版本可以兼容的话可以写在文章下方,汇总成一个表格方便大家更愉快地使用SQLSugar+PostgreSQL吧!

八、兼容表格

.NET 框架版本ORM框架版本PG包版本推荐等级
.Net Framework v4.7.1SQL Sugar v5.0.5.3Npgsql v4.1.10.0☆☆☆☆☆
.Net Framework v4.7.1SQL Sugar v5.0.3.5Npgsql v4.0.10.0☆☆☆
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/950631
推荐阅读
相关标签
  

闽ICP备14008679号