这篇文章主要是介绍和学习在C#中如何使用SqlSugar,记录一下笔记,感兴趣的可以参考一下,如果写的有什么不对的,欢迎指正
在上篇文章里面已经简单的介绍了一下如何创建和使用SqlSugar【C# 学习和使用SlqSugar】,本篇文章里面详细介绍一下,如何通过代码创建数据库和表的内容。如何根据数据库中的表生成实体类
1.新建一个项目,命名为SqlSugarItem1,然后添加SqlSuagr包(这里不详细写了,如果感兴趣的,可以看上一篇文章),为了方便这里在项目下后创建一个Model文件夹,为了放到时候生成的实体类。
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个表
然后新建的Model文件夹下面为空
然后执行项目,创建成功,上面是一些执行的语句,在model文件夹下面也有了5个实体类文件
执行查询,可以查询出结果
var studentlist = dbCline.Queryable<Students>().ToList();
foreach (var student in studentlist)
{
Console.WriteLine("学号:" + student.StudentId + ",姓名:" + student.StudentName);
}
在数据库里面新建一张表StudentClassNew表,字段和StudentClass对应,都在后面新加New,在执行方法GetMode,生成的实体类是在原有的基础上进行更新,不会重复生成。
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.执行后,数据库中会创建好对应的数据库,和表,表中的主键,自增等也会根据特性一起创建好了,包括初始化的数据。
以上就是本文的全部内容,希望对大家有所帮助.