常用的映射方式有两种:DbFirst、CodeFirst
DbFirst:数据库优先,先在数据库中建好表,然后去自动生成代码的实体类。
CodeFirst:代码优先,先在代码中定义好实体类,然后自动在数据库生成表结构。
创建一个控制台项目,引用程序集SqlSugarCode
DbFirst实例:
数据库有两张已经建好的表
代码生成实体类
using SqlSugar;
using System;
namespace SqlSugarStart.DbFirst
{
class Program
{
static void Main(string[] args)
{
show();
}
public static void show()
{
try
{
SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig
{
DbType = DbType.SqlServer,//要连接的数据库类型
ConnectionString = "server=.;uid=sa;pwd=123456;database=SqlSugarTest",
InitKeyType = InitKeyType.SystemTable,//初始化主键和自增列信息到orm的方式
});
sqlSugarClient.DbFirst.CreateClassFile(@"D:\Code\杨中科.NetCore\SqlSugarStart\SqlSugarStart.DbFirst\DbModels");
}
catch (Exception)
{
throw;
}
}
}
}
在生成的类中可以看到不止两个,这是因为程序自动把数据库中所有的表都生成了,包括系统表。
其实想要的只有自己定义的两张表,那就需要使用where条件,选择要生成的表。例如下面实例代码中写的,只生成表名称以C开头的表。
using SqlSugar;
using System;
namespace SqlSugarStart.DbFirst
{
class Program
{
static void Main(string[] args)
{
show();
}
public static void show()
{
try
{
SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig
{
DbType = DbType.SqlServer,//要连接的数据库类型
ConnectionString = "server=.;uid=sa;pwd=123456;database=SqlSugarTest",
InitKeyType = InitKeyType.SystemTable,//初始化主键和自增列信息到orm的方式
});
//sqlSugarClient.DbFirst.CreateClassFile(@"D:\Code\杨中科.NetCore\SqlSugarStart\SqlSugarStart.DbFirst\DbModels");
sqlSugarClient.DbFirst.Where(c => c.StartsWith("C")).CreateClassFile(@"D:\Code\杨中科.NetCore\SqlSugarStart\SqlSugarStart.DbFirst\DbModels");
}
catch (Exception)
{
throw;
}
}
}
}
执行结果如下,只有一张表生成了对应实体类。
CodeFirst实例:
定义一个实体类
using SqlSugar;
namespace SqlSugarStart.CodeFirst.DbModels
{
[SugarTable("Student")]
public class Student
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public string Name { get; set; }
public int age { get; set; }
}
}
生成数据库和表
using SqlSugar;
using SqlSugarStart.CodeFirst.DbModels;
using System;
namespace SqlSugarStart.CodeFirst
{
class Program
{
static void Main(string[] args)
{
show();
}
public static void show()
{
try
{
SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig
{
DbType = DbType.SqlServer,//要连接的数据库类型
ConnectionString = "server=.;uid=sa;pwd=123456;database=SqlSugarCodeFirst",//sqlsqver数据库链接字符串
IsAutoCloseConnection = true
});
#region 创建数据库和表的语句仅执行一次
sqlSugarClient.DbMaintenance.CreateDatabase(); //创建数据库
sqlSugarClient.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Student));//创建表
#endregion
}
catch (Exception)
{
throw;
}
}
}
}
执行结果:
自动在数据库中创建了名称为SqlSugarCodeFirst的数据库,并创建了名称为Student的表。