SqlServer教程六:SqlSugar的⾼级功能
创建表
注意:数据库账号需要有⽐较⾼的权限
1、创建数据
//如果不存在创建数据库
db.DbMaintenance.CreateDatabase();
2、创建表
public class CodeFirstTable1
{
[SugarColumn(IsIdentity = true, IsPrimaryKey = true)]
public int Id { get; set; }
public string Name { get; set; }
[SugarColumn(ColumnDataType = “Nvarchar(255)”)]//⾃定格式的情况 length不要设置
public string Text { get; set; }
[SugarColumn(IsNullable = true)]
public DateTime CreateTime { get; set; }
}
db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(CodeFirstTable1));//这样⼀个表就能成功创建了
3、⼀实体创建多张⼀样结构的表
4、描述
名称 描述
IsIdentity 是否创建⾃增标识
IsPrimaryKey 是否创建主键标识
ColumnName 创建数据库字段的名称(默认取实体类属性名称)
ColumnDataType
创建数据库字段的类型
⽤法1: “varchar(20)” 不需要设置长度
⽤法2: 不设置该参数 系统会根据C#类型⾃动⽣成相应的数据库类型
⽤法3: “nvarchar(20),text” 多个以逗号隔开 例如 B数据库不⽀持nvarchar那么会选择text
IsIgnore ORM不处理该列
IsOnlyIgnoreInsert 插⼊操作时不处理该列
ColumnDescription 备注
Length 长度
IsNullable 是否可以为null默为false
DecimalDigits 精度 如 decimal(18,2) length=18,DecimalDigits=2
OracleSequenceName 设置Oracle序列,设置后该列等同于⾃增列
OldColumnName 修改列名⽤,这样不会新增或者删除列
IndexGroupNameList 创建索引⽤
UniqueGroupNameList 创建唯⼀索引
5、更多⽤例
修改列
[SugarColumn( OldColumnName =“Name”)]
public string NewName { get; set; }
创建索引
[SqlSugar.SugarColumn(IndexGroupNameList = new string[] { “index1” })]
public int V1 { get; set; }
[SqlSugar.SugarColumn(IndexGroupNameList =new string[] { “index1” } )]
public DateTime? V2 { get; set; }
//create index index1_v1_v2 ON table_name (v1,v2)
//唯⼀索引⽤法类似
添加表描述
db.CodeFirst.InitTables(typeof(CodeFirstTable));
[SugarTable(“CodeFirstTable2”,TableDescription = “TableDescription”)]
public class CodeFirstTable
{
[SugarColumn(IsPrimaryKey = true)]
public Guid Id { get; set; }
}
⽣成实体
1.⽣成实体到指定⽬录
db.DbFirst.CreateClassFile(“c:\Demo\1”, “Models”);
2.⽣成实体并且带有筛选
db.DbFirst.Where(“Student”).CreateClassFile(“c:\Demo\2”, “Models”);
db.DbFirst.Where(it => it.ToLower().StartsWith(“view”)).CreateClassFile(“c:\Demo\3”, “Models”); db.DbFirst.Where(it => it.ToLower().StartsWith(“view”)).CreateClassFile(“c:\Demo\4”, “Models”);
3.⽣成带有SqlSugar特性的实体
db.DbFirst.IsCreateAttribute().CreateClassFile(“c:\Demo\5”, “Models”);
4.⽣成实体带有默认值
db.DbFirst.IsCreateDefaultValue().CreateClassFile(“c:\Demo\6”, “Demo.Models”);
5.重写⽣成格式(如果还满⾜不了需求可以使⽤最下⾯的⾃定义Razor模版)
打断点查看old的格式修改后return新的格式
db.DbFirst. SettingClassTemplate(old => { return old;})
.SettingNamespaceTemplate(old =>{ return old;})//命名空间
.SettingPropertyDescriptionTemplate(old => //备注
{
return @" ///
/// Desc_New:{PropertyDescription}
/// Default_New:{DefaultValue}
/
// Nullable_New:{IsNullable}
/// ";
})
.SettingPropertyTemplate(old =>{return old;})//属性
.SettingConstructorTemplate(old =>{return old; })//构造函数
.CreateClassFile(“c:\Demo\7”);
6.格式化类名和属性名
foreach (var item in db.DbMaintenance.GetTableInfoList())
{
string entityName = item.Name.ToUpper();/实体名⼤写/
db.MappingTables.Add(entityName , item.Name);
foreach (var col in db.DbMaintenance.GetColumnInfosByTableName(item.Name))
{
db.MappingColumns.Add(col.DbColumnName.ToUpper() /类的属性⼤写/, col.DbColumnName, entityName); }
}
db.DbFirst.IsCreateAttribute().CreateClassFile(“c:\Demo\8”, “Models”);
⽣成的实体如下
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace Models
{
///
///
///
typeof的用法[SugarTable(“Order”)]
public partial class ORDER
{
public ORDER(){
}
///
/// Desc:
/
// Default:
/// Nullable:False
///
[SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName=“Id”)] public int ID {get;set;}
///
/// Desc:
/// Default:
/// Nullable:False
///
[SugarColumn(ColumnName=“Name”)]
public string NAME {get;set;}
/
//
/// Desc:
/// Default:
/// Nullable:False
///
[SugarColumn(ColumnName=“Price”)]
public decimal PRICE {get;set;}
///
/// Desc:
/// Default:
/// Nullable:True
/
//
[SugarColumn(ColumnName=“CreateTime”)]
public DateTime? CREATETIME {get;set;}
}
}
8.使⽤Razor模版
这种⽅式什么样的格式都可以满⾜你,你⾃已写解析格式
public static void Init()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = Config.ConnectionString,
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
ConfigureExternalServices = new ConfigureExternalServices()
{//创建⼀个ConfigureExternalServices.cs
RazorService = new RazorService()
}
});
var defaultTemplateString=RazorFirst.DefaultRazorClassTemplate;//复制默认的Razor模版进⾏修改db.DbFirst.UseRazorAnalysis(defaultTemplateString).CreateClassFile(“c:\Demo\Razor\”);
ConfigureExternalServices 代码如下:
Nuget需要引⽤RazorEngine
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论