diff --git a/OrmTest/UnitTest/Query/SelectQuery.cs b/OrmTest/UnitTest/Query/SelectQuery.cs index 492124135..395adc8a1 100644 --- a/OrmTest/UnitTest/Query/SelectQuery.cs +++ b/OrmTest/UnitTest/Query/SelectQuery.cs @@ -39,7 +39,12 @@ namespace OrmTest.UnitTest #region dr ot entity db.IgnoreComumns.Add("TestId", "Student"); var d5 = db.Queryable().ToList(); - var d51 = db.Queryable().GroupBy(it=>it.Id).OrderBy(it=>it.Id).Select(it=>it.Id).ToSql(); + var gos = db.Queryable() + .With(SqlWith.NoLock) + .GroupBy(it=>it.Id) + .OrderBy(it=>it.Id) + .Select(it=>it.Id).ToSql(); + base.Check("SELECT [Id] FROM [Student] WITH(NOLOCK) GROUP BY [Id] ORDER BY [Id] ASC", null, gos.Key,null, "基本查询出错"); var dr3 = db.Queryable().Select(it => new ViewModelStudent2 { Name=it.Name,Student=it}).ToList(); var dr0 = db.Queryable().Select(it => new { id=it.Id,w=new { x=it } }).ToList(); var dr1 = db.Queryable().Select(it => new { newid = it.Id }).ToList(); diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index fef914f78..bb36dd643 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -436,6 +436,12 @@ namespace SqlSugar GroupBy(orderByValue.GetResultString()); return this; } + + public ISugarQueryable With(string withString) + { + SqlBuilder.LambadaQueryBuilder.TableWithString = withString; + return this; + } #endregion } } diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs index 3d1597b5f..457af92cd 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs @@ -217,7 +217,10 @@ namespace SqlSugar { get { - var result = Builder.GetTranslationTableName(EntityName) + TableWithString; + var result = Builder.GetTranslationTableName(EntityName); + if (this.TableWithString.IsValuable()) { + result += " " + TableWithString; + } if (this.TableShortName.IsValuable()) { result += " " + TableShortName; diff --git a/SqlSugar/Entities/SqlWith.cs b/SqlSugar/Entities/SqlWith.cs new file mode 100644 index 000000000..603169267 --- /dev/null +++ b/SqlSugar/Entities/SqlWith.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public partial class SqlWith + { + public const string NoLock = "WITH(NOLOCK) "; + } +} diff --git a/SqlSugar/Interface/IQueryable.cs b/SqlSugar/Interface/IQueryable.cs index b8050fc54..98e988314 100644 --- a/SqlSugar/Interface/IQueryable.cs +++ b/SqlSugar/Interface/IQueryable.cs @@ -12,6 +12,7 @@ namespace SqlSugar SqlSugarClient Context { get; set; } ISqlBuilder SqlBuilder { get; set; } + ISugarQueryable With(string withString); ISugarQueryable AddParameters(object pars); ISugarQueryable AddParameters(SugarParameter[] pars); ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type=JoinType.Left); diff --git a/SqlSugar/SqlSugar.csproj b/SqlSugar/SqlSugar.csproj index d47e06e5a..91e6b5a86 100644 --- a/SqlSugar/SqlSugar.csproj +++ b/SqlSugar/SqlSugar.csproj @@ -89,6 +89,7 @@ +