为什么不使用EF,各有各的看法,此处不做讨论。
如何快速使用高效使用SqlSugar。
下面举栗一个使用全过程
前期工作
1:下载SqlSugar。
2:下载MySql.Data
直接在NuGet中搜索安装,查看依赖项选择合适版本。
1、创建立本地数据库表
CREATE TABLE `codes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(45) COLLATE utf8_bin NOT NULL COMMENT '编码:用于确认当前设备所处省份', `name` varchar(45) COLLATE utf8_bin NOT NULL COMMENT '编码对应的位置名称', `description` varchar(45) COLLATE utf8_bin DEFAULT NULL COMMENT '描述', `createtime` datetime(6) DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
2、创建数据库表映射。手动创建,手动写也并不麻烦可以多熟悉一下。在这里不使用自动生成。注意引用(using SqlSugar)下面也是。
[SugarTable("codes")] public class Codes { [SugarColumn(IsPrimaryKey = true,IsIdentity = true,ColumnName = "id")] public int Id { get; set; } [SugarColumn(ColumnName = "code")] public string Code { get; set; } [SugarColumn(ColumnName = "name")] public string Name { get; set; } [SugarColumn(ColumnName = "description")] public string Description { get; set; } [SugarColumn(ColumnName = "createtime")] public DateTime CreateTime { get; set; } }
3、创建DBset类操作数据库表
public class DBSet<T>:SimpleClient<T> where T:class,new() { public DBSet(SqlSugarClient context) : base(context) { } /// <summary> /// 自己扩展方法使用 /// </summary> /// <param name="ids"></param> /// <returns></returns> public List<T> GetByIds(dynamic[] ids) { return Context.Queryable<T>().In(ids).ToList(); } }
4、再封装一层表操作类,使用起来更方便。
public class DBContext { public DBContext(AUTO.Enum.DBTYPE dBTYPE) { string connectionStr = dBTYPE == AUTO.Enum.DBTYPE.UPLOAD ? Setting.AppsettingDic["mysqlConnStr4UploadDB"] : Setting.AppsettingDic["mysqlConnStr4CarDB"]; Db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = connectionStr, DbType = DbType.MySql, IsAutoCloseConnection = true }); } public SqlSugarClient Db; public DBSet<GBQ.DATA.AUTO.Entity.Codes> CDOES_DB { get { return new DBSet<AUTO.Entity.Codes>(Db); } }//编码映射数据库表 }
5、使用
public void Test() { var items = Db.Queryable<T_SITE_DEVICE, T_SITE_ITEM>((st, sc) => new object[] { JoinType.Left, st.DeviceId == sc.Device_id }).Select((st, sc) => new { id = st.DeviceId, name = st.DeviceId, desc = st.Description }).ToList(); var item1 = CODE_DB.GetList(m => m.name == "合肥").SingleOrDefault(); var item2 = CODE_DB.GetList(m => m.code == "5304d200021a46f9b9f1481fdcc43019"); var item3 = MONITOR_ITEM_DB.GetList(m => m.ItemName == "NO"); }
使用方法很简单,可完成多表联合查询,单表查询,高效快捷。最大的优点是使用简单。用过EF的有多难受只有自己知道。