Install-Package LambdaToSql
<connectionStrings> <add name="ConnectionString" connectionString="Server=.;Database=LambdaToSql;User ID=sa;Password=abc@123;" providerName="System.Data.SqlClient" /> </connectionStrings>
//默認方式 LambdaToSql.SqlClient DB = new LambdaToSql.SqlClient();
//自定義連接字符串名稱 var DB = new LambdaToSql.SqlClient(new LambdaToSql.EntityModel.DbContext() { ConnectionStringName = "ConnectionString1", SqlType = LambdaToSql.EntityModel.SqlType.MsSqlServer });
//生成實體保存路徑 var saveFolder = "d:\\class\\"; //生成所有實體 DB.DbFirst.Create(saveFolder); //生成指定表實體對象 DB.DbFirst.CreateByTable(saveFolder, new List<string>() { "Table_ID", "Table_Guid" });
/// <summary> /// 查詢 /// </summary> public void Query() { //查詢所有 var list = DB.QueryTable<EntityModel.Table_ID>().ToList(); //Find主鍵查找,支持Guid 和int 自增主鍵 var entity = DB.QueryTable<EntityModel.Table_ID>().Find(200); //In查詢 var arr = new int?[] { 100, 101, 102, 103 }.ToList(); var list1 = DB.QueryTable<EntityModel.Table_ID>(ex => arr.Contains(ex.ID)).ToList(); //Not In 查詢 var list2 = DB.QueryTable<EntityModel.Table_ID>(ex => ex.ID.ExNotIn(arr)).ToList();//有問題 var list2_1 = DB.QueryTable<EntityModel.Table_ID>(ex => arr.NotContains(ex.ID)).ToList();//有問題 // Like 查詢 var list3 = DB.QueryTable<EntityModel.Table_ID>().Where(ex => ex.LoginName.Contains("15")).ToList();//(LoginName like '%15%') var list4 = DB.QueryTable<EntityModel.Table_ID>().Where(ex => ex.LoginName.NotContains("15")).ToList();//(LoginName not like '%15%') //有問題 var list5 = DB.QueryTable<EntityModel.Table_ID>().Where(ex => ex.LoginName.StartsWith("15")).ToList();//(LoginName like '15%') var list6 = DB.QueryTable<EntityModel.Table_ID>().Where(ex => ex.LoginName.EndsWith("15")).ToList();//(LoginName like '%15') //排序 var list7 = DB.QueryTable<EntityModel.Table_ID>().OrderBy(ex => ex.CreateTime).OrderByDescending(ex => ex.LoginName).ToList(); //分組 var list8 = DB.QueryTable<EntityModel.Table_ID>().GroupBy(ex => new { ex.LoginName, ex.UserName }).ToList(); //只取特定字段 var list9 = DB.QueryTable<EntityModel.Table_ID>().Select(ex => new { ex.LoginName, ex.UserName }).ToList(); //top N var list10 = DB.QueryTable<EntityModel.Table_ID>().Take(10).ToList(); //第幾頁 var list11 = DB.QueryTable<EntityModel.Table_ID>().Skip(2).Take(10).ToList(); //取第一條數據 var list12 = DB.QueryTable<EntityModel.Table_ID>().First(); var list13 = DB.QueryTable<EntityModel.Table_ID>().FirstOrDefault(); //分頁 2005,2008使用row_number分頁,2012以上使用offset分頁形式 int total = 0; var list14 = DB.QueryTable<EntityModel.Table_ID>().Skip(15).Take(30).ToPageList(ref total); //分組 select 比原始去重性能要高一些 DB.QueryTable<EntityModel.Table_ID>().GroupBy(ex => new { ex.UserName, ex.LoginName }) .Select(ex => new { ex.UserName, ex.LoginName }) .ToList(); //判斷知足條件的數據是否存在 var flag = DB.QueryTable<EntityModel.Table_ID>().Any(); //判斷知足條件的數據是否存在 var flag1 = DB.QueryTable<EntityModel.Table_ID>(ex => ex.ID == 2000).Any(); }
/// <summary> /// 函數處理 /// </summary> private void Fun() { //求和 var num1 = DB.QueryTable<EntityModel.Table_ID>().Sum(ex => ex.IsDelete); //最小值 var num2 = DB.QueryTable<EntityModel.Table_ID>().Min(ex => ex.IsDelete); //最大值 var num3 = DB.QueryTable<EntityModel.Table_ID>().Max(ex => ex.IsDelete); //平均值 var num4 = DB.QueryTable<EntityModel.Table_ID>().Avg(ex => ex.IsDelete); //總數 var num5 = DB.QueryTable<EntityModel.Table_ID>().Count(); }
/// <summary> /// 添加數據 /// </summary> public void Inser() { //添加單個實體對象 var entity = new EntityModel.Table_ID() { LoginName = "登陸用戶:", UserName = "用戶名:", PassWord = "密碼-", Gender = "男", IsDelete = 0, Mobile = "15804066511", Remark = "備註", Address = "地址:", CreateTime = DateTime.Now }; var ret = DB.InsertTble(entity).ExecuteNonQuery();//返回主鍵值 //只添加某幾列 var i = DB.InsertTble(entity).InsertColumns(ex => new { ex.LoginName, ex.UserName, ex.Remark }).ExecuteNonQuery(); //忽略某些列 var i1 = DB.InsertTble(entity).IgnoreColumns(ex => new { ex.Mobile, ex.PassWord }).ExecuteNonQuery(); }
/// <summary> /// 更新數據 /// </summary> public void Update() { //更新單個實體對象 var entity = DB.QueryTable<EntityModel.Table_ID>(ex => ex.ID == 200).FirstOrDefault(); entity.PassWord = "12345"; entity.LoginName = "LambdaToSql"; entity.UserName = "LambdaToSql1"; var i = DB.UpdateTble(entity).ExecuteNonQuery(); //更新特定字段,不指定不更新 var i1 = DB.UpdateTble(entity).UpdateColumns(ex => new { ex.PassWord }).ExecuteNonQuery(); //忽略特定字段,其餘字段都更新 var i2 = DB.UpdateTble(entity).IgnoreColumns(ex => new { ex.UserName, ex.PassWord }).ExecuteNonQuery(); //條件更新 不須要取出實體對象 直接數據庫更新 var i3 = DB.UpdateTble(new EntityModel.Table_ID() { PassWord = "123456", LoginName = "12" }).Where(ex => ex.ID == 101).ExecuteNonQuery(true); }
/// <summary> /// 刪除 /// </summary> public void Delete() { //刪除單個實體,經過主鍵刪除 var entity = DB.QueryTable<EntityModel.Table_ID>(ex => ex.ID == 200).FirstOrDefault(); var i = DB.DeleteTble<EntityModel.Table_ID>(entity).ExecuteNonQuery(); //條件刪除 支持查詢裏面的全部條件寫法 var i1 = DB.DeleteTble<EntityModel.Table_ID>(ex => ex.ID == 201).ExecuteNonQuery(); }
/// <summary> /// 事務 /// </summary> public void Tran() { var sqlClient = new LambdaToSql.SqlClient(); try { sqlClient.BeginTran();//開啓事務 //添加單個實體對象 var entity = new EntityModel.Table_ID() { LoginName = "登陸用戶:", UserName = "用戶名:", PassWord = "密碼-", IsDelete = 0, CreateTime = DateTime.Now }; var entity1 = new EntityModel.Table_ID() { LoginName = "登陸用戶:", UserName = "在破敗中崛起,在寂滅中復甦。滄海成塵,雷電枯竭,那一縷幽霧又一次臨近大地,世間的枷鎖被打開了,一個全新的世界就此揭開神祕的一角:", PassWord = "密碼-", IsDelete = 0, CreateTime = DateTime.Now }; var entity2 = new EntityModel.Table_ID() { LoginName = "登陸用戶:", UserName = "用戶名:", PassWord = "密碼-", IsDelete = 0, CreateTime = DateTime.Now }; sqlClient.InsertTble(entity).ExecuteNonQuery(); sqlClient.InsertTble(entity1).ExecuteNonQuery();//錯誤 UserName太長=>回滾 sqlClient.InsertTble(entity2).ExecuteNonQuery(); sqlClient.CommitTran();//提交事務 } catch (Exception ex) { sqlClient.RollbackTran();//回滾事務 } }
/// <summary> /// Ado /// </summary> public void Ado() { var sql = "select top(10) * from table_id"; var sdr = DB.Ado.ExecuteReader(sql); var list = new List<string>(); while (sdr.Read()) { list.Add(sdr[0].ToString()); } sdr.Close(); var Dt = DB.Ado.ExecuteTable(sql); var ls1 = DB.Ado.ExecuteScalar(sql); var ls = DB.Ado.ExecuteScalars(sql); var i = DB.Ado.ExecuteNonQuery("update top (10) table_id set imgurl = 'img1'"); }