首页 > 数据库 >关于SqlSugar导航的使用及介绍

关于SqlSugar导航的使用及介绍

时间:2024-12-01 15:04:20浏览次数:7  
标签:set False get Nullable 介绍 DisplayName 导航 public SqlSugar

        SqlSugar进行初始化,数据库连接配置,代码可以去SqlSugar官网 查看源码,下面给出一个简单的案例,SqlSugar的具体介绍官网非常清晰明了,这里之说干货。

1.Sugar连接配置部分:

    public class SqlSugarInit
    {
        #region    创建数据库连接对象
        public SqlSugarClient Db { get; private set; }
        #endregion
        #region 初始化时读取连接字符串信息
        public static string ConnectionString = CustomConfig.Read();    //替换为你的连接字符串
        #endregion
        public SqlSugarInit()
        {
            ConnectionConfig dB = new ConnectionConfig()
            {
                DbType = DbType.SqlServer,
                IsAutoCloseConnection = true,
                ConnectionString = ConnectionString
            };
            Db = new SqlSugarClient(dB, db =>
            {
                db.Aop.OnLogExecuting = (sql, pars) =>
                {
                    //获取原生SQL推荐 5.1.4.63  性能OK
                    Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));

                    //获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用
                    //Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))
                };

                //注意多租户 有几个设置几个
                //db.GetConnection(i).Aop
                ConfigureExternalServices configureExternalServices = new ConfigureExternalServices()
                {
                    EntityService = (property, column) =>
                    {
                        var attributes = property.GetCustomAttributes(true);//get all attributes 

                        if (attributes.Any(it => it is KeyAttribute))// by attribute set primarykey
                        {
                            column.IsPrimarykey = true; //有哪些特性可以看 1.2 特性明细
                        }
                    },
                    EntityNameService = (type, entity) =>
                    {
                        var attributes = type.GetCustomAttributes(true);
                        if (attributes.Any(it => it is TableAttribute))
                        {
                            var attr = (attributes.First(it => it is TableAttribute) as TableAttribute);
                            entity.DbTableName = attr.Name;
                        }
                    }
                };
            });
        }
        #region 创建数据库
        public void CreateDatabase()
        {
            //建立数据库
            if (Db.DbMaintenance.CreateDatabase())
            {
                Console.WriteLine("数据块建立成功!");

                // 查找所有命名空间
                // 解析 C# 代码
                string targetNamespace = "Common.SugarModels";
                // 获取当前程序集中的所有类型
                Type[] allTypes = Assembly.GetExecutingAssembly().GetTypes();
                // 筛选出指定命名空间下的类型
                Type[] typesInNamespaces = allTypes.Where(t => t.Namespace == targetNamespace & t.IsClass).ToArray();
                Db.CodeFirst.InitTables(typesInNamespaces);
            }
        }
        #endregion
    }

2.实体 

    public partial class Factory
    {
        public Factory()
        {


        }
        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:False
        /// </summary>      
        [CRUDId("Id")]
        [DisplayName("序号")]
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get; set; }

        /// <summary>
        /// Desc:网址
        /// Default:
        /// Nullable:False
        /// </summary>  
        [DisplayName("获取地址")]        
        public string RequestUrlStr { get; set; }

        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:False
        /// </summary>           
        [DisplayName("请求地址")]        
        public string UploadUrlStr { get; set; }

        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:False
        /// </summary>         
        [CRUDValue("Name")]
        [DisplayName("工厂名称")]        
        public string Name { get; set; }

        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:False
        /// </summary>           
        [DisplayName("是否启用")]        
        public bool IsEnable { get; set; }

    }


    ///<summary>
    ///
    ///</summary>
    public partial class ProductionLine
    {
        public ProductionLine()
        {


        }

        private int id;       
        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:False
        /// </summary>   
        [CRUDIdAttribute("Id")]
        [DisplayName("序号")]
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get { return id; } set { id = value; } }


        public int FactoryId { get; set; }
        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:False
        /// </summary>        
        [DisplayName("工厂")]
        [CRUDTable(typeof(Factory))]
        [Navigate(NavigateType.OneToOne, nameof(FactoryId))]
        public Factory Factory { get; set; }

        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:False
        /// </summary>           
        [DisplayName("产线名称")]
        [CRUDValueAttribute("Name")]
        public string Name { get; set; }

        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:False
        /// </summary>           
        [DisplayName("是否启用")]
        public bool IsEnable { get; set; }

    }

 

3.通过导航查询的代码,本次查询采用的一对一查询。具体代码可以查考这里​​​​​​​

            //通过导航进行查询
            __Init__.ProductionLines = sqlSugarInit.Db.Queryable<ProductionLine>()//From StudentA x
                     .Includes(x => x.Factory)
                     .Where(p => p.IsEnable == true)
                     .ToList();

查询结果

标签:set,False,get,Nullable,介绍,DisplayName,导航,public,SqlSugar
From: https://blog.csdn.net/qq_44774906/article/details/144153695

相关文章

  • 「Py」模块篇 之 Python常见模块介绍
    ✨博客主页何曾参静谧的博客(✅关注、......
  • 【PR2024】Adobe Premiere Pro视频编辑软件下载安装与功能介绍
    目录AdobePremierePro软件简介一、软件简介1.1软件背景1.2软件特点1.3适用人群二、系统要求2.1操作系统要求2.2硬件要求2.3显示要求三、下载方法四、功能介绍4.1非线性编辑4.2多种格式支持4.3效果与调整4.4合作与分享功能4.5插件和扩展4.6移动......
  • Burp(5)-decodor、comparer、logger介绍
    声明:学习视频来自b站up主泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec团队的教学视频地址:burp(3)decodorcomparerlogger模块使用_哔哩哔哩_bilibili本文介绍burpsuite的decodor、comparer、logger模块。 一、decoder模块功能Decoder是BurpSuite提供的一个用于......
  • RocketMQ系列1:基础介绍
    ★消息队列16篇1认识RocketMQRocketMQ是一款基于Java开发的分布式消息中间件,它以其高性能、高可靠性、高实时性以及分布式特性而广受好评。它支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。互联网场景中经常使用RocketMQ进行消息路由、订阅发布、异步解耦、流量削......
  • Burp入门(2)-代理功能介绍
      声明:学习视频来自b站up主泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec团队的教学视频地址:burp功能介绍(1)_哔哩哔哩_bilibili本文详细介绍burp的代理功能。一、插件配置代理1.安装代理插件(Google、Edge安装方式同Firefox一致,这里以Firefox为例)  打开扩展商店 :......
  • RK3568平台开发系列讲解(DMA篇)DMA Engine硬件介绍
    ......
  • 从本地部署到企业级服务:十种主流LLM推理框架的技术介绍与对比
    大语言模型(LargeLanguageModels,LLMs)的部署是一项具有技术挑战性的工作。随着模型架构日益复杂,以及硬件需求不断提升,部署过程变得愈发复杂。业界已经发展出多种解决方案,使LLM的部署和扩展变得更加便捷。从适用于个人开发的轻量级本地部署工具,到面向企业级高性能生产环境的推理......
  • #渗透测试#SRC漏洞挖掘#红蓝攻防#黑客工具之Burp Suite介绍02-如何破解(中英对比)
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。                             ......
  • 【JAVA】第十二节:抽象类与接口(详细介绍)
    上一篇详细介绍了面向对象多态的知识,这篇来说说抽象类与接口。目录一、抽象类1.1抽象类是什么?1.2 抽象类的特点1.3抽象类出现的意义1.4匿名对象二、接口2.1接口是什么?2.2接口的特点2.3接口与接口的关系2.4接口出现的意义2.5接口的实现案例三、抽象类和接......
  • 【CameraPoseRefinement】以BARF为例介绍三维重建中的位姿优化
    Introduction在计算机视觉三维重建中,求解3D场景的表示和定位给定的相机帧的相机位姿是两个非常重要的任务,这两个问题互为依赖,一方面,恢复3D场景的表示需要使用已知的相机位姿进行观察;另一方面,定位相机需要来自特征点的可靠对应。错误的相机位姿会对重建的输出和性能产生一系列负......