{"id":16193428,"url":"https://github.com/dotnetnext/asp_net_core_orm_sqlitesugar","last_synced_at":"2025-03-19T04:30:40.039Z","repository":{"id":137494033,"uuid":"71644753","full_name":"DotNetNext/ASP_NET_CORE_ORM_SqliteSugar","owner":"DotNetNext","description":null,"archived":false,"fork":false,"pushed_at":"2016-11-26T05:23:07.000Z","size":2549,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-17T03:34:22.122Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DotNetNext.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-22T14:36:46.000Z","updated_at":"2020-04-10T07:07:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"77c775c9-4e0d-4bef-b865-dbd218751976","html_url":"https://github.com/DotNetNext/ASP_NET_CORE_ORM_SqliteSugar","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DotNetNext%2FASP_NET_CORE_ORM_SqliteSugar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DotNetNext%2FASP_NET_CORE_ORM_SqliteSugar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DotNetNext%2FASP_NET_CORE_ORM_SqliteSugar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DotNetNext%2FASP_NET_CORE_ORM_SqliteSugar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DotNetNext","download_url":"https://codeload.github.com/DotNetNext/ASP_NET_CORE_ORM_SqliteSugar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244357359,"owners_count":20440315,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T08:14:50.843Z","updated_at":"2025-03-19T04:30:40.027Z","avatar_url":"https://github.com/DotNetNext.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"#Contact information\n\nEmail 610262374@qq.com\n\nQQ Group 225982985\n\nBlog http://www.cnblogs.com/sunkaixuan\n\n\n#All versions\n\nASP.NET 4.0+ MSSQL   https://github.com/sunkaixuan/SqlSugar\n\nASP.NET CORE MSSQL   https://github.com/sunkaixuan/ASP_NET_CORE_ORM_SqlSugar\n\nASP.NET 4.0+ MYSQL   https://github.com/sunkaixuan/MySqlSugar\n\nASP.NET CORE MYSQL   https://github.com/sunkaixuan/ASP_NET_CORE_ORM_MySqlSugar\n\nASP.NET 4.0+ Sqlite  https://github.com/sunkaixuan/SqliteSugar\n\nASP.NET CORE Sqlite  https://github.com/sunkaixuan/ASP_NET_CORE_ORM_SqliteSugar\n\nASP.NET 4.0+ ORACLE  https://github.com/sunkaixuan/OracleSugar\n\nASP.NET CORE ORACLE  https://github.com/sunkaixuan/ASP_NET_CORE_ORM_OracleSugar\n\n\n# Instance SqlSugar object\n\n```csharp\nusing(var db = new SqlSugarClient(ConnectionString)){\n\n\t//use object\n\tvar list=db.Queryable\u003cT\u003e().ToList();\n\t\n}\n\n```\n\n# Package instance \n```csharp\n/// \u003csummary\u003e\n/// SqlSugar\n/// \u003c/summary\u003e\npublic class SugarDao\n{\n\tprivate SugarDao()\n\t{\n\n\t}\n\tpublic static string ConnectionString\n\t{\n\t\tget\n\t\t{\n\t\t\tstring reval = \"server=.;uid=sa;pwd=sasa;database=SqlSugarTest\"; \n\t\t\treturn reval;\n\t\t}\n\t}\n\tpublic static SqlSugarClient GetInstance()\n\t{\n\t\tvar db = new SqlSugarClient(ConnectionString);\n\t\tdb.IsEnableLogEvent = true;//Enable log events\n\t\tdb.LogEventStarting = (sql, par) =\u003e { Console.WriteLine(sql + \" \" + par+\"\\r\\n\"); };\n\t\treturn db;\n\t}\n}\n\n```\n##### Use SugarDao\n```csharp\nusing (var db = SugarDao.GetInstance())\n{\n\tvar list=db.Queryable\u003cT\u003e().ToList();\n}\n```\n\n\n\n# 1.Select \n\n##### 1.1 queryable\n```csharp\n\n//select all\nvar student = db.Queryable\u003cStudent\u003e().ToList();\nvar studentDynamic = db.Queryable\u003cStudent\u003e().ToDynamic();\nvar studentJson = db.Queryable\u003cStudent\u003e().ToJson();\n\n\n//select single\nvar single = db.Queryable\u003cStudent\u003e().Single(c =\u003e c.id == 1);\n//select single by primarykey\nvar singleByPk = db.Queryable\u003cStudent\u003e().InSingle(1);\n//select single or default\nvar singleOrDefault = db.Queryable\u003cStudent\u003e().SingleOrDefault(c =\u003e c.id == 11111111);\n//select single or default\nvar single2 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id == 1).SingleOrDefault();\n\n//select first\nvar first = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id == 1).First();\nvar first2 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id == 1).FirstOrDefault();\n\n//between 11 and 20\nvar page1 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003e 10).OrderBy(it =\u003e it.id).Skip(10).Take(10).ToList();\n\n//between 11 and 20 \nvar page2 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003e 10).OrderBy(it =\u003e it.id).ToPageList(2, 10);\n\n//get count\nvar count = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003e 10).Count();\n\n//skip 2\nvar skip = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003e 10).OrderBy(it =\u003e it.id).Skip(2).ToList();\n\n//take 2\nvar take = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003e 10).OrderBy(it =\u003e it.id).Take(2).ToList();\n\n//Not like \nstring conval = \"a\";\nvar notLike = db.Queryable\u003cStudent\u003e().Where(c =\u003e !c.name.Contains(conval.ToString())).ToList();\n\n//Like\nconval = \"三\";\nvar like = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.name.Contains(conval)).ToList();\n\n//where sql string\nvar student12 = db.Queryable\u003cStudent\u003e().Where(c =\u003e \"a\" == \"a\").Where(\"id\u003e@id\", new { id = 1 }).ToList();\nvar student13 = db.Queryable\u003cStudent\u003e().Where(c =\u003e \"a\" == \"a\").Where(\"id\u003e100 and id in( select 1)\").ToList();\n\n\n//is any\nbool isAny100 = db.Queryable\u003cStudent\u003e().Any(c =\u003e c.id == 100);\nbool isAny1 = db.Queryable\u003cStudent\u003e().Any(c =\u003e c.id == 1);\n\n\n//get max id\nobject maxId = db.Queryable\u003cStudent\u003e().Max(it =\u003e it.id);\nint maxId1 = db.Queryable\u003cStudent\u003e().Max(it =\u003e it.id).ObjToInt();\nint maxId2 = db.Queryable\u003cStudent\u003e().Max\u003cint\u003e(\"id\"); \n\n//get min id\nint minId1 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003e 0).Min(it =\u003e it.id).ObjToInt();\nint minId2 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003e 0).Min\u003cint\u003e(\"id\");\n\n\n//order By \nvar orderList = db.Queryable\u003cStudent\u003e().OrderBy(\"id desc,name asc\").ToList();\n//order by \nvar order2List = db.Queryable\u003cStudent\u003e().OrderBy(it =\u003e it.name).OrderBy(it =\u003e it.id, OrderByType.desc).ToList(); // order by name as ,order by id desc\n\n//In\nvar intArray = new[] { \"5\", \"2\", \"3\" };\nvar intList = intArray.ToList();\nvar listnew = db.Queryable\u003cStudent\u003e().Where(it =\u003e intArray.Contains(it.name)).ToList();\nvar list0 = db.Queryable\u003cStudent\u003e().In(it =\u003e it.id, 1, 2, 3).ToList();\nvar list1 = db.Queryable\u003cStudent\u003e().In(it =\u003e it.id, intArray).ToList();\nvar list2 = db.Queryable\u003cStudent\u003e().In(\"id\", intArray).ToList();\nvar list3 = db.Queryable\u003cStudent\u003e().In(it =\u003e it.id, intList).ToList();\nvar list4 = db.Queryable\u003cStudent\u003e().In(\"id\", intList).ToList();\nvar list6 = db.Queryable\u003cStudent\u003e().In(intList).ToList(); //in primary fileds\n\n//group by\nvar list7 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003c 20).GroupBy(it =\u003e it.sex).Select(\"sex,count(*) Count\").ToDynamic();\nvar list8 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003c 20).GroupBy(it =\u003e it.sex).GroupBy(it =\u003e it.id).Select(\"id,sex,count(*) Count\").ToDynamic();\nList\u003cStudentGroup\u003e list9 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003c 20).GroupBy(it =\u003e it.sex).Select\u003cStudentGroup\u003e(\"Sex,count(*) Count\").ToList();\nList\u003cStudentGroup\u003e list10 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003c 20).GroupBy(\"sex\").Select\u003cStudentGroup\u003e(\"Sex,count(*) Count\").ToList();\n//SELECT Sex,Count=count(*)  FROM Student  WHERE 1=1  AND  (id \u003c 20)    GROUP BY Sex --生成结果\n\n\n\n//join\nvar jList = db.Queryable\u003cStudent\u003e()\n\t.JoinTable\u003cSchool\u003e((s1, s2) =\u003e s1.sch_id == s2.id) //默认left join\n\t.Where\u003cSchool\u003e((s1, s2) =\u003e s1.id == 1)\n\t.Select(\"s1.*,s2.name as schName\")\n\t.ToDynamic();\n\n/*join sql\n\t\t\t\t\t\t SELECT s1.*,s2.name as schName \n\t\t\t\t\t\t FROM [Student]  s1 \n\t\t\t\t\t\t LEFT JOIN [School]  s2 ON  s1.sch_id  = s2.id \n\t\t\t\t\t\t WHERE  s1.id  = 1 */\n\n//join and page\nvar jList2 = db.Queryable\u003cStudent\u003e()\n\t.JoinTable\u003cSchool\u003e((s1, s2) =\u003e s1.sch_id == s2.id) //默认left join\n\t//left inner join \n\t//.JoinTable\u003cSchool\u003e((s1, s2) =\u003e s1.sch_id == s2.id ,JoinType.INNER)\n\t.Where\u003cSchool\u003e((s1, s2) =\u003e s1.id \u003e 1)\n\t.OrderBy(s1 =\u003e s1.name)\n\t.Skip(10)\n\t.Take(20)\n\t.Select(\"s1.*,s2.name as schName\")\n\t.ToDynamic();\n\n//join three tables\nvar jList3 = db.Queryable\u003cStudent\u003e()\n\t.JoinTable\u003cSchool\u003e((s1, s2) =\u003e s1.sch_id == s2.id) // left join  School s2  on s1.id=s2.id\n\t.JoinTable\u003cSchool\u003e((s1, s3) =\u003e s1.sch_id == s3.id) // left join  School s3  on s1.id=s3.id\n\t.Where\u003cSchool\u003e((s1, s2) =\u003e s1.id \u003e 1)  // where s1.id\u003e1\n\t.Where(s1 =\u003e s1.id \u003e 0)\n\t.OrderBy\u003cSchool\u003e((s1, s2) =\u003e s1.id) \n\t.Skip(10)\n\t.Take(20)\n\t.Select(\"s1.*,s2.name as schName,s3.name as schName2\")//select string\n\t.ToDynamic();\n\n\n//join five\nList\u003cV_Student\u003e jList4 =\n\tdb.Queryable\u003cStudent\u003e()\n\t.JoinTable\u003cSchool\u003e((s1, s2) =\u003e s1.sch_id == s2.id) // left join  School s2  on s1.id=s2.id\n\t.JoinTable\u003cSchool, Area\u003e((s1, s2, a1) =\u003e a1.id == s2.AreaId)// left join  Area a1  on a1.id=s2.AreaId  \n\t\t.JoinTable\u003cArea, School\u003e((s1, a1, s3) =\u003e a1.id == s3.AreaId)// left join  School s3  on a1.id=s3.AreaId  \n\t\t\t.JoinTable\u003cSchool\u003e((s1, s4) =\u003e s1.sch_id == s4.id) // left join  School s2  on s1.id=s4.id\n\t\t\t.Select\u003cSchool, Area, V_Student\u003e((s1, s2, a1) =\u003e new V_Student { id = s1.id, name = s1.name, SchoolName = s2.name, AreaName = a1.name }).ToList();\n\n//join five sql\n//SELECT id = s1.id, name = s1.name, SchoolName = s2.name, AreaName = a1.name  \n//FROM [Student]   s1 \n//LEFT JOIN School  s2 ON  ( s1.sch_id  = s2.id )    \n//LEFT JOIN Area  a1 ON  ( a1.id  = s2.AreaId )     \n//LEFT JOIN School  s3 ON  ( a1.id  = s3.AreaId )    \n//LEFT JOIN School  s4 ON  ( s1.sch_id  = s4.id )    \n//WHERE 1=1    \n\n\n//Join child\nvar childQuery = db.Queryable\u003cArea\u003e().Where(\"id=@id\").Select(it =\u003e new { id = it.id }).ToSql();//create child SQL\nstring childTableName =SqlSugarTool.PackagingSQL(childQuery.Key);//package sql\nvar queryable = db.Queryable\u003cStudent\u003e()\n\t.JoinTable\u003cSchool\u003e((s1, s2) =\u003e s1.sch_id == s2.id)  //LEFT JOIN School  s2 ON  ( s1.sch_id  = s2.id )  \n\t.JoinTable(childTableName, \"a1\", \"a1.id=s2.areaid\", new { id = 1 }, JoinType.INNER) //INNER JOIN (SELECT *  FROM [Area]   WHERE 1=1  AND id=@id   ) a1 ON a1.id=s2.areaid\n\t.OrderBy(s1 =\u003e s1.id);\n\nvar list = queryable.Select\u003cSchool, Area, V_Student\u003e((s1, s2, a1) =\u003e new V_Student { id = s1.id, name = s1.name, SchoolName = s2.name, AreaName = a1.name })\n\t.ToPageList(0, 200);\nvar count2 = queryable.Count();\n\n\n//append queryable\nvar queryable2 = db.Queryable\u003cStudent\u003e().Where(it =\u003e true);\nif (maxId.ObjToInt() == 1)\n{\n\tqueryable2.Where(it =\u003e it.id == 1);\n}\nelse\n{\n\tqueryable2.Where(it =\u003e it.id == 2);\n}\nvar listJoin = queryable2.ToList();\n\n\n//queryable SqlSugarClient \nvar par = new Queryable\u003cStudent\u003e().Where(it =\u003e it.id == 1);//声名没有connection对象的Queryable\npar.DB = db;\nvar listPar = par.ToList();\n\n\n//get sql和 pars\nvar id = 1;\nvar sqlAndPars = db.Queryable\u003cStudent\u003e().Where(it =\u003e it.id == id).OrderBy(it =\u003e it.id).ToSql();\n\n\n\n//express functions\nvar par1 = \"2015-1-1\"; var par2 = \"   I have a trim  \";\nvar r1 = db.Queryable\u003cStudent\u003e().Where(it =\u003e it.name == par1.ObjToString()).ToList(); //ObjToString if null return \"\"\nvar r2 = db.Queryable\u003cInsertTest\u003e().Where(it =\u003e it.d1 == par1.ObjToDate()).ToList();\nvar r3 = db.Queryable\u003cInsertTest\u003e().Where(it =\u003e it.id == 1.ObjToInt()).ToList();//ObjToInt if null return 0\nvar r4 = db.Queryable\u003cInsertTest\u003e().Where(it =\u003e it.id == 2.ObjToDecimal()).ToList();\nvar r5 = db.Queryable\u003cInsertTest\u003e().Where(it =\u003e it.id == 3.ObjToMoney()).ToList();\nvar r6 = db.Queryable\u003cInsertTest\u003e().Where(it =\u003e it.v1 == par2.Trim()).ToList();\nvar convert1 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.name == \"a\".ToString()).ToList();\nvar convert2 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id == Convert.ToInt32(\"1\")).ToList();\nvar convert3 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.name == par2.ToLower()).ToList();\nvar convert4 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.name == par2.ToUpper()).ToList();\nvar convert5= db.Queryable\u003cStudent\u003e().Where(c =\u003e DateTime.Now \u003e Convert.ToDateTime(\"2015-1-1\")).ToList();\nvar c1 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.name.Contains(\"a\")).ToList();\nvar c2 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.name.StartsWith(\"a\")).ToList();\nvar c3 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.name.EndsWith(\"a\")).ToList();\nvar c4 = db.Queryable\u003cStudent\u003e().Where(c =\u003e !string.IsNullOrEmpty(c.name)).ToList();\nvar c5 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.name.Equals(\"小杰\")).ToList();\nvar c6 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.name.Length \u003e 4).ToList();\nvar time = db.Queryable\u003cInsertTest\u003e().Where(c =\u003e c.d1\u003eDateTime.Now.AddDays(1)).ToList();\nvar time2 = db.Queryable\u003cInsertTest\u003e().Where(c =\u003e c.d1 \u003e DateTime.Now.AddYears(1)).ToList();\nvar time3 = db.Queryable\u003cInsertTest\u003e().Where(c =\u003e c.d1 \u003e DateTime.Now.AddMonths(1)).ToList();\nvar intList = intArray.ToList();\nvar list0 = db.Queryable\u003cStudent\u003e().In(it =\u003e it.id, 1,2,3).ToList();\nvar list1 = db.Queryable\u003cStudent\u003e().In(it=\u003eit.id, intArray).ToList();\nvar list2 = db.Queryable\u003cStudent\u003e().In(\"id\", intArray).ToList();\nvar list3 = db.Queryable\u003cStudent\u003e().In(it =\u003e it.id, intList).ToList();\nvar list4 = db.Queryable\u003cStudent\u003e().In(\"id\", intList).ToList();\n\n//group by\nvar list7 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003c 20).GroupBy(it =\u003e it.sex).Select(\"sex,Count=count(*)\").ToDynamic();\nvar list8 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003c 20).GroupBy(it =\u003e it.sex).GroupBy(it=\u003eit.id).Select(\"id,sex,Count=count(*)\").ToDynamic();\nList\u003cSexTotal\u003e list5 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003c 20).GroupBy(it =\u003e it.sex).Select\u003cStudent, SexTotal\u003e(\"Sex,Count=count(*)\").ToList();\nList\u003cSexTotal\u003e list6 = db.Queryable\u003cStudent\u003e().Where(c =\u003e c.id \u003c 20).GroupBy(\"sex\").Select\u003cStudent, SexTotal\u003e    (\"Sex,Count=count(*)\").ToList();\n//SELECT Sex,Count=count(*)  FROM Student  WHERE 1=1  AND  (id \u003c 20)    GROUP BY Sex \n\n\n//join\nvar jList = db.Queryable\u003cStudent\u003e()\n\t.JoinTable\u003cStudent, School\u003e((s1, s2) =\u003e s1.sch_id == s2.id) //detault left join\n\t\t.Where\u003cStudent, School\u003e((s1, s2) =\u003e s1.id == 1)\n\t\t\t.Select(\"s1.*,s2.name as schName\")\n\t\t\t.ToDynamic();\n\n//join by page\nvar jList2 = db.Queryable\u003cStudent\u003e()\n\t.JoinTable\u003cStudent, School\u003e((s1, s2) =\u003e s1.sch_id == s2.id) //default left join\n\t\t//inner join\n\t\t//.JoinTable\u003cStudent, School\u003e((s1, s2) =\u003e s1.sch_id == s2.id  ,JoinType.INNER)\n\t\t.Where\u003cStudent, School\u003e((s1, s2) =\u003e s1.id \u003e 1)\n\t\t\t.OrderBy\u003cStudent, School\u003e((s1, s2) =\u003e s1.name)\n\t\t\t\t.Skip(10)\n\t\t\t\t.Take(20)\n\t\t\t\t.Select(\"s1.*,s2.name as schName\")\n\t\t\t\t.ToDynamic();\n\n//join select new \nvar jList3 = db.Queryable\u003cStudent\u003e()\n\t.JoinTable\u003cStudent, School\u003e((s1, s2) =\u003e s1.sch_id == s2.id) // left join  School s2  on s1.id=s2.id\n\t\t.Where\u003cStudent, School\u003e((s1, s2) =\u003e s1.id \u003e 1)  // where s1.id\u003e1\n\t\t\t.OrderBy\u003cStudent, School\u003e((s1, s2) =\u003e s1.id) //order by s1.id no one  ordder   .oderBy().orderby  \n\t\t\t\t.Skip(1)\n\t\t\t\t.Take(2)\n\t\t\t\t.Select\u003cStudent, School, classNew\u003e((s1, s2) =\u003e new classNew() { newid = s1.id, newname = s2.name, xx_name = s1.name }) \n\t\t\t\t\t.ToList();\n```\n\n1.2 SqlQuery\n```csharp\n//to list\nList\u003cStudent\u003e list1 = db.SqlQuery\u003cStudent\u003e(\"select * from Student\");\n//to list with par\nList\u003cStudent\u003e list2 = db.SqlQuery\u003cStudent\u003e(\"select * from Student where id=@id\", new { id = 1 });\n//to dynamic\ndynamic list3 = db.SqlQueryDynamic(\"select * from student\");\n//to json\nstring list4 = db.SqlQueryJson(\"select * from student\");\n//get int\nvar list5 = db.SqlQuery\u003cint\u003e(\"select  id from Student limit 0,1\").SingleOrDefault();\n//get dictionary\nDictionary\u003cstring, string\u003e list6 = db.SqlQuery\u003cKeyValuePair\u003cstring, string\u003e\u003e(\"select id,name from Student\").ToDictionary(it =\u003e it.Key, it =\u003e it.Value);\n//get List\u003cstring[]\u003e\nvar list7 = db.SqlQuery\u003cstring[]\u003e(\"select   id,name from Student limit 0,1\").SingleOrDefault();\n//get sp result\nvar spResult = db.SqlQuery\u003cSchool\u003e(\"exec sp_school @p1,@p2\", new { p1 = 1, p2 = 2 });//换成MYSQL写法现在是SQL写法\n\n//get sp and output \nvar pars = SqlSugarTool.GetParameters(new { p1 = 1,p2=0 }); //dynmaic to SqlParameter\ndb.IsClearParameters = false;//close clear parametrs\npars[1].Direction = ParameterDirection.Output; //set  output\nvar spResult2 = db.SqlQuery\u003cSchool\u003e(\"exec sp_school @p1,@p2 output\", pars);//换成MYSQL写法现在是SQL写法\ndb.IsClearParameters = true;//open  clear parameters\nvar outPutValue = pars[1].Value;//get output @p2 value\n\n//sp \nvar pars2 = SqlSugarTool.GetParameters(new { p1 = 1, p2 = 0 }); \ndb.CommandType = CommandType.StoredProcedure;\nvar spResult3 = db.SqlQuery\u003cSchool\u003e(\"sp_school\", pars2);\ndb.CommandType = CommandType.Text;\n\n\n//get first row first column\nstring v1 = db.GetString(\"select '张三' as name\");\nint v2 = db.GetInt(\"select 1 as name\");\ndouble v3 = db.GetDouble(\"select 1 as name\");\ndecimal v4 = db.GetDecimal(\"select 1 as name\");\n//....\n```\n##### 1.3 Sqlable\n```csharp\n//join\nList\u003cSchool\u003e dataList = db.Sqlable()\n\t.From(\"school\", \"s\")\n\t.Join(\"student\", \"st\", \"st.id\", \"s.id\", JoinType.INNER)\n\t.Join(\"student\", \"st2\", \"st2.id\", \"st.id\", JoinType.LEFT)\n\t.Where(\"s.id\u003e100 and s.id\u003c@id\")\n\t.Where(\"1=1\")\n\t.OrderBy(\"id\")\n\t.SelectToList\u003cSchool/*new model*/\u003e(\"st.*\", new { id = 1 });\n\n//join page\nList\u003cSchool\u003e dataPageList = db.Sqlable()\n\t.From(\"school\", \"s\")\n\t.Join(\"student\", \"st\", \"st.id\", \"s.id\", JoinType.INNER)\n\t.Join(\"student\", \"st2\", \"st2.id\", \"st.id\", JoinType.LEFT)\n\t.Where(\"s.id\u003e100 and s.id\u003c100\")\n\t.SelectToPageList\u003cSchool\u003e(\"st.*\", \"s.id\", 1, 10);\n\n//page where\nList\u003cSchool\u003e dataPageList2 = db.Sqlable()\n\t.From(\"school\", \"s\")\n\t.Join(\"student\", \"st\", \"st.id\", \"s.id\", JoinType.INNER)\n\t.Join(\"student\", \"st2\", \"st2.id\", \"st.id\", JoinType.LEFT)\n\t.Where(\"s.id\u003e100 and s.id\u003c100 and s.id in (select 1 )\" )\n\t.SelectToPageList\u003cSchool\u003e(\"st.*\", \"s.id\", 1, 10);\n\n\n\n//-------- Dynmaic OR Json-----//\n\n//join\nvar list1 = db.Sqlable().From(\"student\", \"s\").Join(\"school\", \"l\", \"s.sch_id\", \"l.id and l.id=@id\", JoinType.INNER).SelectToDynamic(\"*\", new { id = 1 });\nvar list2 = db.Sqlable().From(\"student\", \"s\").Join(\"school\", \"l\", \"s.sch_id\", \"l.id and l.id=@id\", JoinType.INNER).SelectToJson(\"*\", new { id = 1 });\nvar list3 = db.Sqlable().From(\"student\", \"s\").Join(\"school\", \"l\", \"s.sch_id\", \"l.id and l.id=@id\", JoinType.INNER).SelectToDataTable(\"*\", new { id = 1 });\n\n//page\nvar list4 = db.Sqlable().From(\"student\", \"s\").Join(\"school\", \"l\", \"s.sch_id\", \"l.id and l.id=@id\", JoinType.INNER).SelectToPageDynamic(\"s.*\", \"l.id\", 1, 10, new { id = 1 });\nvar list5 = db.Sqlable().From(\"student\", \"s\").Join(\"school\", \"l\", \"s.sch_id\", \"l.id and l.id=@id\", JoinType.INNER).SelectToPageTable(\"s.*\", \"l.id\", 1, 10, new { id = 1 });\nvar list6 = db.Sqlable().From(\"student\", \"s\").Join(\"school\", \"l\", \"s.sch_id\", \"l.id and l.id=@id\", JoinType.INNER).SelectToPageDynamic(\"s.*\", \"l.id\", 1, 10, new { id = 1 });\n\n\n//--------append sqlable-----//\nSqlable sable = db.Sqlable().From\u003cStudent\u003e(\"s\").Join\u003cSchool\u003e(\"l\", \"s.sch_id\", \"l.id\", JoinType.INNER);\nstring name = \"a\";\nint id = 1;\nif (!string.IsNullOrEmpty(name))\n{\n\tsable = sable.Where(\"s.name=@name\");\n}\nif (!string.IsNullOrEmpty(name))\n{\n\tsable = sable.Where(\"s.id=@id or s.id=100\");\n}\nif (id \u003e 0)\n{\n\tsable = sable.Where(\"l.id in (select top 10 id from school)\");\n}\nvar pars = new { id = id, name = name };\nint pageCount = sable.Count(pars);\nvar list7 = sable.SelectToPageList\u003cStudent\u003e(\"s.*\", \"l.id desc\", 1, 20, pars);\n```\n\n# 2.Insert\n````csharp\n//insert item\ndb.Insert(GetInsertItem());  \n\n//insert list\ndb.InsertRange(GetInsertList()); \n\n//insert list (so fast)\ndb.SqlBulkCopy(GetInsertList()); \n\n\n//setting disable insert columns\ndb.DisableInsertColumns = new string[] { \"sex\" };\nStudent s = new Student()\n{\n\tname = \"mr\" + new Random().Next(1, int.MaxValue),\n\tsex = \"gril\"\n};\n\nvar id = db.Insert(s); // insert  with no 【sex】\n\n````\n\n# 3.Update \n```csharp\n//update specified column\ndb.Update\u003cSchool\u003e(new { name = \"蓝翔14\" }, it =\u003e it.id == 14); //only update name\ndb.Update\u003cSchool, int\u003e(new { name = \"蓝翔11 23 12\", areaId = 2 }, 11, 23, 12);\ndb.Update\u003cSchool, string\u003e(new { name = \"蓝翔2\" }, new string[] { \"11\", \"21\" });\ndb.Update\u003cSchool\u003e(new { name = \"蓝翔2\" }, it =\u003e it.id == 100);\nvar array=new int[]{1,2,3};\ndb.Update\u003cSchool\u003e(new { name = \"蓝翔2\" }, it =\u003e array.Contains(it.id));// id in 1,2,3\n\n//update list  by enity primary key\nvar updateResult = db.UpdateRange(GetUpdateList());a\n\n//update list  by enity primary key (so fast)\nvar updateResult2 = db.SqlBulkReplace(GetUpdateList2());\n\n//update by dictionary\nvar dic = new Dictionary\u003cstring, string\u003e();\ndic.Add(\"name\", \"第十三条\");\ndic.Add(\"areaId\", \"1\");\ndb.Update\u003cSchool, int\u003e(dic, 13);\n\n\n//update  by  entity\ndb.Update(new School { id = 16, name = \"蓝翔16\", AreaId = 1 });\ndb.Update\u003cSchool\u003e(new School { id = 12, name = \"蓝翔12\", AreaId = 2 }, it =\u003e it.id == 18);\ndb.Update\u003cSchool\u003e(new School() { id = 11, name = \"青鸟11\" });\n\n//settig disable Update Columns\ndb.DisableUpdateColumns = new string[] { \"CreateTime\" };//CreateTime no update\n\nTestUpdateColumns updObj = new TestUpdateColumns()\n{\n\tVGUID = Guid.Parse(\"542b5a27-6984-47c7-a8ee-359e483c8470\"),\n\tName = \"xx\",\n\tName2 = \"xx2\",\n\tIdentityField = 0,\n\tCreateTime = null\n};\n\ndb.Update(updObj);\n\n\n```\n\n# 4.Delete\n```csharp\n//delete by primary key\ndb.Delete\u003cSchool, int\u003e(10);\n\n//delete by exp\ndb.Delete\u003cSchool\u003e(it =\u003e it.id \u003e 100);//support it=\u003earray.contains(it.id)\n\n//delete by primary key values\ndb.Delete\u003cSchool, string\u003e(new string[] { \"100\", \"101\", \"102\" });\n\n//delete by field values\ndb.Delete\u003cSchool, string\u003e(it =\u003e it.name, new string[] { \"\" });\ndb.Delete\u003cSchool, int\u003e(it =\u003e it.id, new int[] { 20, 22 });\n\n\n//delete by entity\ndb.Delete(new School() { id = 200 });\n\n//delete by sql where  string\ndb.Delete\u003cSchool\u003e(\"id=@id\", new { id = 100 });\n\n//false delete\n//db.FalseDelete\u003cschool\u003e(\"is_del\", 100);\n//sql: update school set is_del=1 where id in(100)\n//db.FalseDelete\u003cschool\u003e(\"is_del\", it=\u003eit.id==100);\n\n```\n\n# 5.Tran\n```csharp\nusing (SqlSugarClient db = SugarDao.GetInstance())\n{\n\tdb.IsNoLock = true; \n\tdb.CommandTimeOut = 30000; \n\ttry\n\t{\n\t\tdb.BeginTran();\n\t\t//db.BeginTran(IsolationLevel.ReadCommitted);+3\n\n\t\tdb.CommitTran();\n\t}\n\tcatch (Exception)\n\t{\n\t\tdb.RollbackTran();\n\t\tthrow;\n\t}\n}\n```\n\n# 6.Rename tables\n```csharp\npublic class MappingTable : IDemos\n{\n\n\tpublic void Init()\n\t{\n\t\tConsole.WriteLine(\"启动MappingTable.Init\");\n\n\t\t//单个设置\n\t\tusing (var db = SugarDao.GetInstance())\n\t\t{\n\t\t\tvar list = db.Queryable\u003cV_Student\u003e(\"Student\").ToList();//查询的是 select * from student 而我的实体名称为V_Student\n\t\t}\n\n\n\t\t//全局设置\n\t\tusing (var db = SugarFactory.GetInstance())\n\t\t{\n\t\t\tvar list = db.Queryable\u003cV_Student\u003e().ToList();//查询的是 select * from student 而我的实体名称为V_Student\n\t\t}\n\t}\n\n\n\t/// \u003csummary\u003e\n\t/// 全局配置类\n\t/// \u003c/summary\u003e\n\tpublic class SugarConfigs\n\t{\n\t\t//key类名 value表名\n\t\tpublic static List\u003cKeyValue\u003e MpList = new List\u003cKeyValue\u003e(){\n\t\t\tnew KeyValue(){ Key=\"FormAttr\", Value=\"Flow_FormAttr\"},\n\t\t\t\tnew KeyValue(){ Key=\"Student3\", Value=\"Student\"},\n\t\t\t\tnew KeyValue(){ Key=\"V_Student\", Value=\"Student\"}\n\t\t};\n\t}\n\n\t/// \u003csummary\u003e\n\t/// SqlSugar实例工厂\n\t/// \u003c/summary\u003e\n\tpublic class SugarFactory\n\t{\n\n\t\t//禁止实例化\n\t\tprivate SugarFactory()\n\t\t{\n\n\t\t}\n\t\tpublic static SqlSugarClient GetInstance()\n\t\t{\n\t\t\tstring connection = SugarDao.ConnectionString; //这里可以动态根据cookies或session实现多库切换\n\t\t\tvar db = new SqlSugarClient(connection);\n\n\t\t\tdb.SetMappingTables(SugarConfigs.MpList);//设置关联表 (引用地址赋值，每次赋值都只是存储一个内存地址)\n\n\n\n\t\t\t//批量设置别名表\n\t\t\t//db.ClassGenerating.ForeachTables(db, tableName =\u003e\n\t\t\t//{\n\t\t\t//    db.AddMappingTable(new KeyValue() { Key = tableName.Replace(\"bbs.\",\"\"), Value =  tableName }); //key实体名，value表名\n\t\t\t//});\n\n\n\t\t\treturn db;\n\t\t}\n\t}\n}\n```\n\n# 7.Rename Columns\n```csharp\n//别名列的功能\npublic class MappingColumns : IDemos\n{\n\n\tpublic void Init()\n\t{\n\t\tConsole.WriteLine(\"启动MappingColumns.Init\");\n\n\t\t//全局设置\n\t\tusing (var db = SugarFactory.GetInstance())\n\t\t{\n\t\t\tvar list = db.Queryable\u003cStudent\u003e().Where(it=\u003eit.classId==1).ToList();\n\t\t}\n\t}\n\n\tpublic class Student\n\t{\n\n\t\t//id\n\t\tpublic int classId { get; set; }\n\n\t\t//name\n\t\tpublic string className { get; set; }\n\n\t\t//sch_id\n\t\tpublic int classSchoolId { get; set; }\n\n\t\tpublic int isOk { get; set; }\n\t}\n\n\t/// \u003csummary\u003e\n\t/// 全局配置别名列（不区分表）\n\t/// \u003c/summary\u003e\n\tpublic class SugarConfigs\n\t{\n\t\t//key实体字段名 value表字段名 ，KEY唯一否则异常\n\t\tpublic static List\u003cKeyValue\u003e MpList = new List\u003cKeyValue\u003e(){\n\t\t\tnew KeyValue(){ Key=\"classId\", Value=\"id\"},\n\t\t\t\tnew KeyValue(){ Key=\"className\", Value=\"name\"},\n\t\t\t\tnew KeyValue(){ Key=\"classSchoolId\", Value=\"sch_id\"}\n\t\t};\n\t}\n\n\t/// \u003csummary\u003e\n\t/// SqlSugar实例工厂\n\t/// \u003c/summary\u003e\n\tpublic class SugarFactory\n\t{\n\n\t\t//禁止实例化\n\t\tprivate SugarFactory()\n\t\t{\n\n\t\t}\n\t\tpublic static SqlSugarClient GetInstance()\n\t\t{\n\t\t\tstring connection = SugarDao.ConnectionString; //这里可以动态根据cookies或session实现多库切换\n\t\t\tvar db = new SqlSugarClient(connection);\n\t\t\t//注意：只有启动属性映射才可以使用SetMappingColumns\n\t\t\tdb.IsEnableAttributeMapping = true;\n\t\t\tdb.SetMappingColumns(SugarConfigs.MpList);//设置关联列 (引用地址赋值，每次赋值都只是存储一个内存地址)\n\t\t\treturn db;\n\t\t}\n\t}\n}\n```\n\n#8.Ignore error columns\n```csharp\nusing (var db = SugarDao.GetInstance())\n{\n\tdb.IsIgnoreErrorColumns = true;\n}\n```\n\n#9.Create class files\n```csharp\ndb.ClassGenerating.CreateClassFiles(db, (\"e:/TestModels\"), \"Models\");\n```\n\n# More [http://www.cnblogs.com/sunkaixuan/p/5911334.html](http://www.cnblogs.com/sunkaixuan/p/5911334.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotnetnext%2Fasp_net_core_orm_sqlitesugar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdotnetnext%2Fasp_net_core_orm_sqlitesugar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotnetnext%2Fasp_net_core_orm_sqlitesugar/lists"}