C# 学习和使用SlqSugar 二

这篇文章主要是介绍和学习在C#中如何使用SqlSugar,记录一下笔记,感兴趣的可以参考一下,如果写的有什么不对的,欢迎指正

前言

在上篇文章里面已经简单的介绍了一下如何创建和使用SqlSugar【C# 学习和使用SlqSugar】,本篇文章里面详细介绍一下,如何通过代码创建数据库和表的内容。如何根据数据库中的表生成实体类

使用SqlSugar生成实体类

1.新建一个项目,命名为SqlSugarItem1,然后添加SqlSuagr包(这里不详细写了,如果感兴趣的,可以看上一篇文章),为了方便这里在项目下后创建一个Model文件夹,为了放到时候生成的实体类。
C# 学习和使用SlqSugar 二_第1张图片
2.然后开始连接数据库(这里也不详细讲了,和上篇文章的类似)

static void Main(string[] args)
        {
            string ConnectString = ConfigurationManager.AppSettings["ContextString"];//读取连接字符串 
            SqlSugarClient dbCline = new SqlSugarClient(new ConnectionConfig
            {
                ConnectionString = ConnectString,//数据库连接, Data Source=.;Initial Catalog=StudentManageDB;Persist Security Info=True;User ID=sa;Password=******
                DbType = DbType.SqlServer,//数据库类型
                IsAutoCloseConnection = true,//是否关闭连接,如果写成false,则需要手动释放和关闭
            });
            //支持sql语句的各种输出,方便排查和查看问题
            dbCline.Aop.OnLogExecuted = (sql, par) =>
            {
                Console.WriteLine("\r\n");
                Console.WriteLine("===========================================================================");
                Console.WriteLine($"{DateTime.Now.ToString("yyyyMMdd HH:mm:ss")},Sql语句:{sql}");
                Console.WriteLine("===========================================================================");
            };
            GetModel(dbCline);//调用生成实体类的方法
            Console.Read();
        }

在创建GetModel的方法,并调用,CreateClassFile这个方法的前面那个参数是代表要生成到的路径地址,后面是代表命名空间
在这里插入图片描述

/// 
        /// 根据数据库获取实体类
        /// 
        private static void GetModel(SqlSugarClient db) 
        {
            try 
            {
                db.DbFirst.IsCreateDefaultValue().CreateClassFile(@"E:\PROJECT\练习项目文件\SqlSugarItem1\Model", "SqlSugarItem1.Model");//前面是要生成到的路径地址,后面是命名空间
                Console.WriteLine("创建成功:");
            } 
            catch(Exception ex)
            {
                Console.WriteLine("生成出错:"+ex.Message);
            }
        }

这里得注意引用一下Newtonsoft.Json这个包,否则可能会出错。
目前这个数据库里面是有5个表
C# 学习和使用SlqSugar 二_第2张图片
然后新建的Model文件夹下面为空
C# 学习和使用SlqSugar 二_第3张图片
然后执行项目,创建成功,上面是一些执行的语句,在model文件夹下面也有了5个实体类文件
C# 学习和使用SlqSugar 二_第4张图片
C# 学习和使用SlqSugar 二_第5张图片
C# 学习和使用SlqSugar 二_第6张图片

执行查询,可以查询出结果

var studentlist = dbCline.Queryable<Students>().ToList();
            foreach (var student in studentlist)
            {
                Console.WriteLine("学号:" + student.StudentId + ",姓名:" + student.StudentName);
            }

在这里插入图片描述
在数据库里面新建一张表StudentClassNew表,字段和StudentClass对应,都在后面新加New,在执行方法GetMode,生成的实体类是在原有的基础上进行更新,不会重复生成。
C# 学习和使用SlqSugar 二_第7张图片

根据实体类生成数据库或表(CodeFirst)

1.创建一个实体类Users,里面用到了一些特性,主键,非空等

[SugarTable("Users")]//如果实体类的名称和表名不一致,可以添加这个特性
    public class Users
    {
        /// 
        /// 主键
        /// 
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public long Id { get; set; }
        /// 
        /// 用户名
        /// 
        [SugarColumn(IsNullable = false)]
        public string Name { get; set; }
        /// 
        /// 昵称
        /// 
        [SugarColumn(IsNullable = false)]
        public string NickName { get; set; }
        /// 
        /// 密码
        /// 
        [SugarColumn(IsNullable = false)]
        public string Password { get; set; }
        /// 
        /// 用户类型(0=超级管理员,1=普通用户)
        /// 
        [SugarColumn(IsNullable = false)]
        public int UserType { get; set; }
        /// 
        /// 是否启用(0=未启用,1=启用)
        /// 
        [SugarColumn(IsNullable = false)]
        public bool IsEnable { get; set; }
        /// 
        /// 描述
        /// 
        [SugarColumn(IsNullable = true)]
        public string Description { get; set; }
        /// 
        /// 创建人Id
        /// 
        [SugarColumn(IsNullable = false)]
        public long CreateUserId { get; set; }
        /// 
        /// 创建日期
        /// 
        [SugarColumn(IsNullable = false)]
        public DateTime CreateDate { get; set; }
    }

2.将数据库连接改成数据库中没有存在的TestDB,然后进行创建
在这里插入图片描述

3.写一个方法去创建数据库和表的并调用,里面通过反射的方法去获取对应的实体类,并且初始化一条数据。

private static void InitBase(SqlSugarClient db) 
        {
            //根据数据库连接字符串,判断数据库是否存在,如果不存在则创建数据库,存在则不创建
            db.DbMaintenance.CreateDatabase();
            //通过反射创建表,如果不存在则创建,否则不创建
            string nspace = "SqlSugarItem1.Model";
            //通过反射读取所需要的类(表)
            Type[] ass = Assembly.LoadFrom(AppContext.BaseDirectory + "SqlSugarItem1.dll").GetTypes().Where(p => p.Namespace == nspace).ToArray();
            db.CodeFirst.SetStringDefaultLength(200).InitTables(ass);//200代表的意思是默认最大200张表,如果超过则要增加
            //初始化
            Users user = new Users()
            {
                Name = "admin",
                NickName = "超级管理员",
                Password = "123456",
                UserType = 0,
                IsEnable = true,
                Description = "数据库初始化时默认添加的超级管理员",
                CreateDate = DateTime.Now,
                CreateUserId = 0
            };
            long userId = db.Insertable(user).ExecuteReturnBigIdentity();
        }

4.执行后,数据库中会创建好对应的数据库,和表,表中的主键,自增等也会根据特性一起创建好了,包括初始化的数据。
C# 学习和使用SlqSugar 二_第8张图片
C# 学习和使用SlqSugar 二_第9张图片
在这里插入图片描述
以上就是本文的全部内容,希望对大家有所帮助.

你可能感兴趣的:(SqlSugar,c#,c#,学习,sqlserver)