diff --git a/README.md b/README.md index 8771b0dab..65c9fc1be 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # SqlSugar 4.X API -## Contactinfomation -Email:610262374@qq.com +## Contactinfomation +Email:610262374@qq.com QQ Group:225982985 ## 3.x API @@ -16,318 +16,282 @@ SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString ### 1.2 Introduction ```c -var getAll = db.Queryable - ().ToList(); - var getAllNoLock = db.Queryable - ().With(SqlWith.NoLock).ToList(); - var getByPrimaryKey = db.Queryable - ().InSingle(2); - var getByWhere = db.Queryable - ().Where(it => it.Id == 1 || it.Name == "a").ToList(); - var getByFuns = db.Queryable - ().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList(); - var sum = db.Queryable - ().Sum(it=>it.Id); - var isAny = db.Queryable - ().Where(it=>it.Id==-1).Any(); - var isAny2 = db.Queryable - ().Any(it => it.Id == -1); - var getListByRename = db.Queryable - ().AS("Student").ToList(); - var group = db.Queryable - ().GroupBy(it => it.Id) - .Having(it => SqlFunc.AggregateCount(it.Id) > 10) - .Select(it =>new { id = SqlFunc.AggregateCount(it.Id) }).ToList(); - ``` +var getAll = db.Queryable().ToList(); +var getAllNoLock = db.Queryable().With(SqlWith.NoLock).ToList(); +var getByPrimaryKey = db.Queryable().InSingle(2); +var getByWhere = db.Queryable().Where(it => it.Id == 1 || it.Name == "a").ToList(); +var getByFuns = db.Queryable().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList(); +var sum = db.Queryable().Sum(it=>it.Id); +var isAny = db.Queryable().Where(it=>it.Id==-1).Any(); +var isAny2 = db.Queryable().Any(it => it.Id == -1); +var getListByRename = db.Queryable().AS("Student").ToList(); +var group = db.Queryable().GroupBy(it => it.Id) +.Having(it => SqlFunc.AggregateCount(it.Id) > 10) +.Select(it =>new { id = SqlFunc.AggregateCount(it.Id) }).ToList(); +``` - ### 1.3 Page - ```c - var pageIndex = 1; - var pageSize = 2; - var totalCount = 0; - //page - var page = db.Queryable - ().ToPageList(pageIndex, pageSize, ref totalCount); +### 1.3 Page +```c +var pageIndex = 1; +var pageSize = 2; +var totalCount = 0; +//page +var page = db.Queryable().ToPageList(pageIndex, pageSize, ref totalCount); - //page join - var pageJoin = db.Queryable - ((st, sc) => new object[] { - JoinType.Left,st.SchoolId==sc.Id - }).ToPageList(pageIndex, pageSize, ref totalCount); +//page join +var pageJoin = db.Queryable((st, sc) => new object[] { +JoinType.Left,st.SchoolId==sc.Id +}).ToPageList(pageIndex, pageSize, ref totalCount); - //top 5 - var top5 = db.Queryable - ().Take(5).ToList(); +//top 5 +var top5 = db.Queryable().Take(5).ToList(); - //skip5 - var skip5 = db.Queryable - ().Skip(5).ToList(); - ``` +//skip5 +var skip5 = db.Queryable().Skip(5).ToList(); +``` - ### 1.4 Join - ```c - //join 2 - var list = db.Queryable - ((st, sc) => new object[] { - JoinType.Left,st.SchoolId==sc.Id - }) - .Where(st=>st.Name=="jack").ToList(); +### 1.4 Join +```c +//join 2 +var list = db.Queryable((st, sc) => new object[] { +JoinType.Left,st.SchoolId==sc.Id +}) +.Where(st=>st.Name=="jack").ToList(); - //join 3 - var list2 = db.Queryable - ((st, sc,st2) => new object[] { - JoinType.Left,st.SchoolId==sc.Id, - JoinType.Left,st.SchoolId==st2.Id - }) - .Where((st, sc, st2)=> st2.Id==1||sc.Id==1||st.Id==1).ToList(); +//join 3 +var list2 = db.Queryable((st, sc,st2) => new object[] { +JoinType.Left,st.SchoolId==sc.Id, +JoinType.Left,st.SchoolId==st2.Id +}) +.Where((st, sc, st2)=> st2.Id==1||sc.Id==1||st.Id==1).ToList(); - //join return List - var list3 = db.Queryable - ((st, sc) => new object[] { - JoinType.Left,st.SchoolId==sc.Id - }).Select((st,sc)=>new ViewModelStudent { Name= st.Name,SchoolId=sc.Id }).ToList(); +//join return List +var list3 = db.Queryable((st, sc) => new object[] { +JoinType.Left,st.SchoolId==sc.Id +}).Select((st,sc)=>new ViewModelStudent { Name= st.Name,SchoolId=sc.Id }).ToList(); - //join Order By (order by st.id desc,sc.id desc) - var list4 = db.Queryable - ((st, sc) => new object[] { - JoinType.Left,st.SchoolId==sc.Id - }) - .OrderBy(st=>st.Id,OrderByType.Desc) - .OrderBy((st,sc)=>sc.Id,OrderByType.Desc) - .Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList(); - ``` +//join Order By (order by st.id desc,sc.id desc) +var list4 = db.Queryable((st, sc) => new object[] { +JoinType.Left,st.SchoolId==sc.Id +}) +.OrderBy(st=>st.Id,OrderByType.Desc) +.OrderBy((st,sc)=>sc.Id,OrderByType.Desc) +.Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList(); +``` - ### 1.5 SqlFunctions - ```c - var t1 = db.Queryable - ().Where(it => SqlFunc.ToLower(it.Name) == SqlFunc.ToLower("JACK")).ToList(); - //SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student] WHERE ((LOWER([Name])) = (LOWER(@MethodConst0)) ) +### 1.5 SqlFunctions +```c +var t1 = db.Queryable().Where(it => SqlFunc.ToLower(it.Name) == SqlFunc.ToLower("JACK")).ToList(); +//SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student] WHERE ((LOWER([Name])) = (LOWER(@MethodConst0)) ) - /***More Functions***/ - //SqlFunc.IsNullOrEmpty(object thisValue) - //SqlFunc.ToLower(object thisValue) - //SqlFunc.string ToUpper(object thisValue) - //SqlFunc.string Trim(object thisValue) - //SqlFunc.bool Contains(string thisValue, string parameterValue) - //SqlFunc.ContainsArray(object[] thisValue, string parameterValue) - //SqlFunc.StartsWith(object thisValue, string parameterValue) - //SqlFunc.EndsWith(object thisValue, string parameterValue) - //SqlFunc.Equals(object thisValue, object parameterValue) - //SqlFunc.DateIsSame(DateTime date1, DateTime date2) - //SqlFunc.DateIsSame(DateTime date1, DateTime date2, DateType dataType) - //SqlFunc.DateAdd(DateTime date, int addValue, DateType millisecond) - //SqlFunc.DateAdd(DateTime date, int addValue) - //SqlFunc.DateValue(DateTime date, DateType dataType) - //SqlFunc.Between(object value, object start, object end) - //SqlFunc.ToInt32(object value) - //SqlFunc.ToInt64(object value) - //SqlFunc.ToDate(object value) - //SqlFunc.ToString(object value) - //SqlFunc.ToDecimal(object value) - //SqlFunc.ToGuid(object value) - //SqlFunc.ToDouble(object value) - //SqlFunc.ToBool(object value) - //SqlFunc.Substring(object value, int index, int length) - //SqlFunc.Replace(object value, string oldChar, string newChar) - //SqlFunc.Length(object value) { throw new NotImplementedException(); } - //SqlFunc.AggregateSum(object thisValue) - //SqlFunc.AggregateAvg - (TResult thisValue) - //SqlFunc.AggregateMin(object thisValue) - //SqlFunc.AggregateMax(object thisValue) - //SqlFunc.AggregateCount(object thisValue) - ``` +/***More Functions***/ +//SqlFunc.IsNullOrEmpty(object thisValue) +//SqlFunc.ToLower(object thisValue) +//SqlFunc.string ToUpper(object thisValue) +//SqlFunc.string Trim(object thisValue) +//SqlFunc.bool Contains(string thisValue, string parameterValue) +//SqlFunc.ContainsArray(object[] thisValue, string parameterValue) +//SqlFunc.StartsWith(object thisValue, string parameterValue) +//SqlFunc.EndsWith(object thisValue, string parameterValue) +//SqlFunc.Equals(object thisValue, object parameterValue) +//SqlFunc.DateIsSame(DateTime date1, DateTime date2) +//SqlFunc.DateIsSame(DateTime date1, DateTime date2, DateType dataType) +//SqlFunc.DateAdd(DateTime date, int addValue, DateType millisecond) +//SqlFunc.DateAdd(DateTime date, int addValue) +//SqlFunc.DateValue(DateTime date, DateType dataType) +//SqlFunc.Between(object value, object start, object end) +//SqlFunc.ToInt32(object value) +//SqlFunc.ToInt64(object value) +//SqlFunc.ToDate(object value) +//SqlFunc.ToString(object value) +//SqlFunc.ToDecimal(object value) +//SqlFunc.ToGuid(object value) +//SqlFunc.ToDouble(object value) +//SqlFunc.ToBool(object value) +//SqlFunc.Substring(object value, int index, int length) +//SqlFunc.Replace(object value, string oldChar, string newChar) +//SqlFunc.Length(object value) { throw new NotImplementedException(); } +//SqlFunc.AggregateSum(object thisValue) +//SqlFunc.AggregateAvg(TResult thisValue) +//SqlFunc.AggregateMin(object thisValue) +//SqlFunc.AggregateMax(object thisValue) +//SqlFunc.AggregateCount(object thisValue) +``` - ### 1.6 Select - ```c - var s1 = db.Queryable - ().Select(it => new ViewModelStudent2 { Name = it.Name, Student = it }).ToList(); - var s2 = db.Queryable - ().Select(it => new { id = it.Id, w = new { x = it } }).ToList(); - var s3 = db.Queryable - ().Select(it => new { newid = it.Id }).ToList(); - var s4 = db.Queryable - ().Select(it => new { newid = it.Id, obj = it }).ToList(); - var s5 = db.Queryable - ().Select(it => new ViewModelStudent2 { Student = it, Name = it.Name }).ToList(); - ``` +### 1.6 Select +```c +var s1 = db.Queryable().Select(it => new ViewModelStudent2 { Name = it.Name, Student = it }).ToList(); +var s2 = db.Queryable().Select(it => new { id = it.Id, w = new { x = it } }).ToList(); +var s3 = db.Queryable().Select(it => new { newid = it.Id }).ToList(); +var s4 = db.Queryable().Select(it => new { newid = it.Id, obj = it }).ToList(); +var s5 = db.Queryable().Select(it => new ViewModelStudent2 { Student = it, Name = it.Name }).ToList(); +``` - ### 1.7 Join Sql - ```c - var join3 = db.Queryable("Student", "st") - .AddJoinInfo("School", "sh", "sh.id=st.schoolid") - .Where("st.id>@id") - .AddParameters(new { id = 1 }) - .Select("st.*").ToList(); - //SELECT st.* FROM [Student] st Left JOIN School sh ON sh.id=st.schoolid WHERE st.id>@id - ``` +### 1.7 Join Sql +```c +var join3 = db.Queryable("Student", "st") + .AddJoinInfo("School", "sh", "sh.id=st.schoolid") + .Where("st.id>@id") + .AddParameters(new { id = 1 }) + .Select("st.*").ToList(); + //SELECT st.* FROM [Student] st Left JOIN School sh ON sh.id=st.schoolid WHERE st.id>@id + ``` + + ### 1.8 ADO.NET + ```c +var db = GetInstance(); +var t1= db.Ado.SqlQuery("select 'a'"); +var t2 = db.Ado.GetInt("select 1"); +var t3 = db.Ado.GetDataTable("select 1 as id"); +//more +//db.Ado.GetXXX... + ``` - ### 1.8 ADO.NET - ```c - var db = GetInstance(); - var t1= db.Ado.SqlQuery - ("select 'a'"); - var t2 = db.Ado.GetInt("select 1"); - var t3 = db.Ado.GetDataTable("select 1 as id"); - //more - //db.Ado.GetXXX... - ``` +### 1.9 Where +```c +var list = db.Queryable((st, sc) => new object[] { +JoinType.Left,st.SchoolId==sc.Id +}) +.Where((st,sc)=> sc.Id == 1) +.Where((st,sc) => st.Id == 1) +.Where((st, sc) => st.Id == 1 && sc.Id == 2).ToList(); - ### 1.9 Where - ```c - var list = db.Queryable - ((st, sc) => new object[] { - JoinType.Left,st.SchoolId==sc.Id - }) - .Where((st,sc)=> sc.Id == 1) - .Where((st,sc) => st.Id == 1) - .Where((st, sc) => st.Id == 1 && sc.Id == 2).ToList(); +//SELECT [st].[Id],[st].[SchoolId],[st].[Name],[st].[CreateTime] FROM [Student] st +//Left JOIN School sc ON ( [st].[SchoolId] = [sc].[Id] ) +//WHERE ( [sc].[Id] = @Id0 ) AND ( [st].[Id] = @Id1 ) AND (( [st].[Id] = @Id2 ) AND ( [sc].[Id] = @Id3 )) - //SELECT [st].[Id],[st].[SchoolId],[st].[Name],[st].[CreateTime] FROM [Student] st - //Left JOIN School sc ON ( [st].[SchoolId] = [sc].[Id] ) - //WHERE ( [sc].[Id] = @Id0 ) AND ( [st].[Id] = @Id1 ) AND (( [st].[Id] = @Id2 ) AND ( [sc].[Id] = @Id3 )) +//Where If +string name = null; +string name2 = "sunkaixuan"; +var list2 = db.Queryable() +.WhereIF(!string.IsNullOrEmpty(name), it => it.Name == name) +.WhereIF(!string.IsNullOrEmpty(name2), it => it.Name == name2).ToList(); +``` - //Where If - string name = null; - string name2 = "sunkaixuan"; - var list2 = db.Queryable - () - .WhereIF(!string.IsNullOrEmpty(name), it => it.Name == name) - .WhereIF(!string.IsNullOrEmpty(name2), it => it.Name == name2).ToList(); - ``` + +## 2. Insert + ```c +var insertObj = new Student() { Name = "jack", CreateTime = Convert.ToDateTime("2010-1-1") ,SchoolId=1}; + +//Insert reutrn Insert Count +var t2 = db.Insertable(insertObj).ExecuteCommand(); + +//Insert reutrn Identity Value +var t3 = db.Insertable(insertObj).ExecuteReutrnIdentity(); - ## 2. Insert - ```c - var insertObj = new Student() { Name = "jack", CreateTime = Convert.ToDateTime("2010-1-1") ,SchoolId=1}; - - //Insert reutrn Insert Count - var t2 = db.Insertable(insertObj).ExecuteCommand(); - - //Insert reutrn Identity Value - var t3 = db.Insertable(insertObj).ExecuteReutrnIdentity(); +//Only insert Name +var t4 = db.Insertable(insertObj).InsertColumns(it => new { it.Name,it.SchoolId }).ExecuteReutrnIdentity(); - //Only insert Name - var t4 = db.Insertable(insertObj).InsertColumns(it => new { it.Name,it.SchoolId }).ExecuteReutrnIdentity(); +//Ignore TestId +var t5 = db.Insertable(insertObj).IgnoreColumns(it => new { it.Name, it.TestId }).ExecuteReutrnIdentity(); - //Ignore TestId - var t5 = db.Insertable(insertObj).IgnoreColumns(it => new { it.Name, it.TestId }).ExecuteReutrnIdentity(); +//Ignore TestId +var t6 = db.Insertable(insertObj).IgnoreColumns(it => it == "Name" || it == "TestId").ExecuteReutrnIdentity(); - //Ignore TestId - var t6 = db.Insertable(insertObj).IgnoreColumns(it => it == "Name" || it == "TestId").ExecuteReutrnIdentity(); +//Use Lock +var t8 = db.Insertable(insertObj).With(SqlWith.UpdLock).ExecuteCommand(); - //Use Lock - var t8 = db.Insertable(insertObj).With(SqlWith.UpdLock).ExecuteCommand(); +var insertObj2 = new Student() { Name = null, CreateTime = Convert.ToDateTime("2010-1-1") }; +var t9 = db.Insertable(insertObj2).Where(true/* Is insert null */, true/*off identity*/).ExecuteCommand(); + +//Insert List +var insertObjs = new List(); +for (int i = 0; i < 1000; i++) +{ + insertObjs.Add(new Student() { Name = "name" + i }); +} +var s9 = db.Insertable(insertObjs.ToArray()).InsertColumns(it => new { it.Name }).ExecuteCommand(); +``` +## 3. Delete + + ```c +var t1 = db.Deleteable().Where(new Student() { Id = 1 }).ExecuteCommand(); + +//use lock +var t2 = db.Deleteable().With(SqlWith.RowLock).ExecuteCommand(); - var insertObj2 = new Student() { Name = null, CreateTime = Convert.ToDateTime("2010-1-1") }; - var t9 = db.Insertable(insertObj2).Where(true/* Is insert null */, true/*off identity*/).ExecuteCommand(); +//by primary key +var t3 = db.Deleteable().In(1).ExecuteCommand(); - //Insert List - var insertObjs = new List - (); - for (int i = 0; i < 1000; i++) - { - insertObjs.Add(new Student() { Name = "name" + i }); - } - var s9 = db.Insertable(insertObjs.ToArray()).InsertColumns(it => new { it.Name }).ExecuteCommand(); - ``` - ## 3. Delete +//by primary key array +var t4 = db.Deleteable().In(new int[] { 1, 2 }).ExecuteCommand(); - ```c - var t1 = db.Deleteable - ().Where(new Student() { Id = 1 }).ExecuteCommand(); +//by expression +var t5 = db.Deleteable().Where(it => it.Id == 1).ExecuteCommand(); + ``` + ## 4. Update - //use lock - var t2 = db.Deleteable - ().With(SqlWith.RowLock).ExecuteCommand(); + ```c +//update reutrn Update Count +var t1= db.Updateable(updateObj).ExecuteCommand(); + +//Only update Name +var t3 = db.Updateable(updateObj).UpdateColumns(it => new { it.Name }).ExecuteCommand(); - //by primary key - var t3 = db.Deleteable - ().In(1).ExecuteCommand(); +//Ignore Name and TestId +var t4 = db.Updateable(updateObj).IgnoreColumns(it => new { it.Name, it.TestId }).ExecuteCommand(); - //by primary key array - var t4 = db.Deleteable - ().In(new int[] { 1, 2 }).ExecuteCommand(); - - //by expression - var t5 = db.Deleteable - ().Where(it => it.Id == 1).ExecuteCommand(); - ``` - ## 4. Update - - ```c - //update reutrn Update Count - var t1= db.Updateable(updateObj).ExecuteCommand(); - - //Only update Name - var t3 = db.Updateable(updateObj).UpdateColumns(it => new { it.Name }).ExecuteCommand(); +//Ignore Name and TestId +var t5 = db.Updateable(updateObj).IgnoreColumns(it => it == "Name" || it == "TestId").With(SqlWith.UpdLock).ExecuteCommand(); - //Ignore Name and TestId - var t4 = db.Updateable(updateObj).IgnoreColumns(it => new { it.Name, it.TestId }).ExecuteCommand(); +//Use Lock +var t6 = db.Updateable(updateObj).With(SqlWith.UpdLock).ExecuteCommand(); - //Ignore Name and TestId - var t5 = db.Updateable(updateObj).IgnoreColumns(it => it == "Name" || it == "TestId").With(SqlWith.UpdLock).ExecuteCommand(); +//update List +var t7 = db.Updateable(updateObjs).ExecuteCommand(); + +//Re Set Value +var t8 = db.Updateable(updateObj) + .ReSetValue(it => it.Name == (it.Name + 1)).ExecuteCommand(); + +//Where By Expression +var t9 = db.Updateable(updateObj).Where(it => it.Id == 1).ExecuteCommand(); + +//Update By Expression Where By Expression +var t10 = db.Updateable() + .UpdateColumns(it => new Student() { Name="a",CreateTime=DateTime.Now }) + .Where(it => it.Id == 11).ExecuteCommand(); + ``` + + ## 5. Table structure is different from entity + ##### Priority level: + AS>Add>Attribute + ### 5.1 Add + ```c +db.MappingTables.Add() +db.MappingColumns.Add() +db.IgnoreColumns.Add() + ``` + ### 5.2 AS + ```c +db.Queryable().As("tableName").ToList(); + ``` +### 5.3 Attribute + ```c +[SugarColumn(IsIgnore=true)] +public int TestId { get; set; } + ``` + + ## 6. Use Tran + ```c + +//1. no result +var result = db.UseTran(() => +{ + db.Ado.ExecuteCommand("delete student"); +}); - //Use Lock - var t6 = db.Updateable(updateObj).With(SqlWith.UpdLock).ExecuteCommand(); - - //update List - var t7 = db.Updateable(updateObjs).ExecuteCommand(); - - //Re Set Value - var t8 = db.Updateable(updateObj) - .ReSetValue(it => it.Name == (it.Name + 1)).ExecuteCommand(); - - //Where By Expression - var t9 = db.Updateable(updateObj).Where(it => it.Id == 1).ExecuteCommand(); - - //Update By Expression Where By Expression - var t10 = db.Updateable - () - .UpdateColumns(it => new Student() { Name="a",CreateTime=DateTime.Now }) - .Where(it => it.Id == 11).ExecuteCommand(); - ``` - - ## 5. Table structure is different from entity - ##### Priority level: - AS>Add>Attribute - ### 5.1 Add - ```c - db.MappingTables.Add() - db.MappingColumns.Add() - db.IgnoreColumns.Add() - ``` - ### 5.2 AS - ```c - db.Queryable - ().As("tableName").ToList(); - ``` - ### 5.3 Attribute - ```c - [SugarColumn(IsIgnore=true)] - public int TestId { get; set; } - ``` - - ## 6. Use Tran - ```c - - //1. no result - var result = db.UseTran(() => - { - db.Ado.ExecuteCommand("delete student"); - }); - - - //2 has result - var result2 = db.UseTran>(() => +//2 has result +var result2 = db.UseTran>(() => { return db.Queryable().ToList(); }); @@ -348,21 +312,21 @@ catch (Exception) ``` ## 7. Use SP ```c - //1. no result + //1. no result db.Ado.UseStoredProcedure(() => { string spName = "sp_help"; var getSpReslut = db.Ado.SqlQueryDynamic(spName, new { objname = "student" }); }); - //2. has result + //2. has result var result= db.Ado.UseStoredProcedure(() => { string spName = "sp_help"; return db.Ado.SqlQueryDynamic(spName, new { objname = "student" }); }); - - //3. has output + + //3. has output object outPutValue; var outputResult = db.Ado.UseStoredProcedure(() => { @@ -435,3 +399,4 @@ var db = GetInstance(); }) .CreateClassFile("c:\\Demo\\6"); } +```