CodeFirst的意思为先有model代码,根据model实体创建数据库对象。
本示例代码用到的ConnectionConfig如下:
public class MyConnConfig
{
public static ConnectionConfig connectionConfig = new ConnectionConfig()
{
ConnectionString = @"Data Source=.\sql2008;Initial Catalog=test;Persist Security Info=True;User ID=sa;Password=test666",
IsAutoCloseConnection = true,
DbType = SqlSugar.DbType.SqlServer
};
public static ConnectionConfig connectionConfig2 = new ConnectionConfig()
{
ConnectionString = @"Data Source=.\sql2008;Initial Catalog=test2;Persist Security Info=True;User ID=sa;Password=test666",
IsAutoCloseConnection =true,
DbType =DbType.SqlServer
};
}
1、CreateDatabase():创建数据库
//创建数据库 CreateDatabase()
private void button1_Click(object sender, EventArgs e)
{
using (SqlSugarClient db=new SqlSugarClient(MyConnConfig.connectionConfig2))
{
db.DbMaintenance.CreateDatabase();
/*
注意:
1、没有数据库,才创建。
2、Oracle等数据不支持该方法,需要手工建库
*/
}
}
2、InitTables():根据数据库实体类,创建数据库表
2.1 实体类Student的代码如下:
//这里的内容出现在类文件顶部
using System;
using System.Linq;
using System.Text;
using SqlSugar; //这行是代码生成的,追加到using列表的末尾处
namespace Models
{
///<summary>
///学生表
///</summary>
public partial class Student
{
public Student(){
}
/// <summary>
/// Desc:主键ID
/// Default:
/// Nullable:False
/// </summary>这里的内容出现在xml注释结尾处
[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
public int ID {get;set;}
/// <summary>
/// Desc:学生姓名
/// Default:
/// Nullable:True
/// </summary>这里的内容出现在xml注释结尾处
public string Name {get;set;}
/// <summary>
/// Desc:年龄
/// Default:18
/// Nullable:True
/// </summary>这里的内容出现在xml注释结尾处
public int? Age {get;set;}
}
}
//这里的内容将出现的类文件的结尾
2.2 根据Models.Student实体类,创建数据库表Student
db.CodeFirst.InitTables(typeof(Models.Student));
生成的数据表如图所示:
默认生成的varchar长度为255,以下示例代码演示修改默认varchar的长度为200
db.CodeFirst
.SetStringDefaultLength(200)
.InitTables(typeof(Models.Student));
注意:如果表已经存在了,则InitTables()会再次创建表操作,实验发现,即便表里面有数据,执行InitTables()操作后,数据仍然存在。