## v0.5.3

- 增加 ISelect.ToList(true) 自动贪婪加载 LeftJoin/InnerJoin/RightJoin 导航数据;#35
- 增加 IAdo.Query<T1, T2 ...> 多结果集查询;
- 增加 IAdo.ExecuteDataSet 多结果集查询;
- 优化 未设置实体属性 set 的将被自动过滤 IsIgnore;
This commit is contained in:
28810
2019-04-22 18:34:05 +08:00
parent 58e8771a15
commit 9dd85f33f9
23 changed files with 169 additions and 94 deletions

View File

@ -1,26 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="FreeSql.DbContext" Version="0.5.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\FreeSql.DbContext\FreeSql.DbContext\FreeSql.DbContext.csproj" />
<ProjectReference Include="..\FreeSql\FreeSql.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FreeSql\FreeSql.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="DataAnnotations\MySql\" />
<Folder Include="DataAnnotations\SqlServer\" />
<Folder Include="DataContext\MySql\" />
</ItemGroup>
<ItemGroup>
<Folder Include="DataAnnotations\MySql\" />
<Folder Include="DataAnnotations\SqlServer\" />
<Folder Include="DataContext\MySql\" />
</ItemGroup>
</Project>

View File

@ -239,6 +239,9 @@ namespace FreeSql.Tests.MySql {
g.mysql.Insert<TestGuidIdToList>().AppendData(new TestGuidIdToList()).ExecuteAffrows();
var testGuidId5 = g.mysql.Select<TestGuidIdToList>().ToList();
var testGuidId6 = g.mysql.Select<TestGuidIdToList>().ToList(a => a.id);
var t11 = select.Where(a => a.Type.Name.Length > 0).ToList(true);
var t21 = select.Where(a => a.Type.Parent.Name.Length > 0).ToList(true);
}
class TestGuidIdToList {
public Guid id { get; set; }

View File

@ -40,6 +40,11 @@ namespace FreeSql.Tests.MySql {
var t5 = g.mysql.Ado.Query<dynamic>("select * from song");
}
[Fact]
public void QueryMultipline() {
var t3 = g.mysql.Ado.Query<xxx, (int, string, string), dynamic>("select * from song; select * from song; select * from song");
}
class xxx {
public int Id { get; set; }
public string Path { get; set; }

View File

@ -149,6 +149,9 @@ namespace FreeSql.Tests.Oracle {
g.oracle.Insert<TestGuidIdToList>().AppendData(new TestGuidIdToList()).ExecuteAffrows();
var testGuidId5 = g.oracle.Select<TestGuidIdToList>().ToList();
var testGuidId6 = g.oracle.Select<TestGuidIdToList>().ToList(a => a.id);
var t11 = select.Where(a => a.Type.Name.Length > 0).ToList(true);
var t21 = select.Where(a => a.Type.Parent.Name.Length > 0).ToList(true);
}
class TestGuidIdToList {
public Guid id { get; set; }

View File

@ -41,6 +41,11 @@ namespace FreeSql.Tests.Oracle {
var t5 = g.oracle.Ado.Query<dynamic>("select * from \"TB_TOPIC\"");
}
[Fact]
public void QueryMultipline() {
//var t3 = g.oracle.Ado.Query<xxx, (int, string, string), dynamic>("select * from \"TB_TOPIC\"; select * from \"TB_TOPIC\"; select * from \"TB_TOPIC\"");
}
class xxx {
public int Id { get; set; }
public string Path { get; set; }

View File

@ -219,6 +219,9 @@ namespace FreeSql.Tests.PostgreSQL {
g.pgsql.Insert<TestGuidIdToList>().AppendData(new TestGuidIdToList()).ExecuteAffrows();
var testGuidId5 = g.pgsql.Select<TestGuidIdToList>().ToList();
var testGuidId6 = g.pgsql.Select<TestGuidIdToList>().ToList(a => a.id);
var t11 = select.Where(a => a.Type.Name.Length > 0).ToList(true);
var t21 = select.Where(a => a.Type.Parent.Name.Length > 0).ToList(true);
}
class TestGuidIdToList {
public Guid id { get; set; }

View File

@ -42,6 +42,12 @@ namespace FreeSql.Tests.PostgreSQL {
var t5 = g.pgsql.Ado.Query<dynamic>("select * from xxx");
}
[Fact]
public void QueryMultipline() {
g.pgsql.CodeFirst.SyncStructure<xxx>();
var t3 = g.pgsql.Ado.Query<xxx, (int, string, string), dynamic>("select * from xxx; select * from xxx; select * from xxx");
}
class xxx {
public int Id { get; set; }
public string Path { get; set; }

View File

@ -151,6 +151,9 @@ namespace FreeSql.Tests.SqlServer {
_sqlserverFixture.SqlServer.Insert<TestGuidIdToList>().AppendData(new TestGuidIdToList()).ExecuteAffrows();
var testGuidId5 = _sqlserverFixture.SqlServer.Select<TestGuidIdToList>().ToList();
var testGuidId6 = _sqlserverFixture.SqlServer.Select<TestGuidIdToList>().ToList(a => a.id);
var t11 = select.Where(a => a.Type.Name.Length > 0).ToList(true);
var t21 = select.Where(a => a.Type.Parent.Name.Length > 0).ToList(true);
}
class TestGuidIdToList {
public Guid id { get; set; }

View File

@ -74,6 +74,13 @@ namespace FreeSql.Tests.SqlServer {
new System.Data.SqlClient.SqlParameter("Id", 1));
}
[Fact]
public void QueryMultipline() {
var tnsql1 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id);
var t3 = _sqlserverFixture.SqlServer.Ado.Query<xxx, (int, string, string), dynamic>("select * from xxx; select * from xxx; select * from xxx");
}
class xxx {
public int Id { get; set; }
public int ParentId { get; set; }

View File

@ -160,6 +160,9 @@ namespace FreeSql.Tests.Sqlite {
g.sqlite.Insert<TestGuidIdToList>().AppendData(new TestGuidIdToList()).ExecuteAffrows();
var testGuidId5 = g.sqlite.Select<TestGuidIdToList>().ToList();
var testGuidId6 = g.sqlite.Select<TestGuidIdToList>().ToList(a => a.id);
var t11 = select.Where(a => a.Type.Name.Length > 0).ToList(true);
var t21 = select.Where(a => a.Type.Parent.Name.Length > 0).ToList(true);
}
class TestGuidIdToList {
public Guid id { get; set; }

View File

@ -39,6 +39,11 @@ namespace FreeSql.Tests.Sqlite {
var t5 = g.sqlite.Ado.Query<dynamic>("select * from \"song\"");
}
[Fact]
public void QueryMultipline() {
var t3 = g.sqlite.Ado.Query<xxx, (int, string, string), dynamic>("select * from song; select * from song; select * from song");
}
class xxx {
public int Id { get; set; }
public string Path { get; set; }

View File

@ -329,6 +329,9 @@ namespace FreeSql.Tests {
var t23 = g.mysql.Update<TestInfo>().SetSource(new[] { new TestInfo { Id = 1, Title = "111" }, new TestInfo { Id = 2, Title = "222" } }).Set(a => a.TypeGuid + 222111).ToSql();
var t24 = g.mysql.Update<TestInfo>().SetSource(new[] { new TestInfo { Id = 1, Title = "111" }, new TestInfo { Id = 2, Title = "222" } }).Set(a => a.TypeGuid + 222111).Where(a => a.Title == "111").ToSql();
var t1000 = g.sqlite.Select<ExamPaper>().ToSql();
var t1001 = g.sqlite.Insert<ExamPaper>().AppendData(new ExamPaper()).ToSql();
}
}
class NullAggreTestTable {
@ -366,4 +369,42 @@ namespace FreeSql.Tests {
public List<TestTypeInfo> Types { get; set; }
}
/// <summary>
/// 试卷表
/// </summary>
[Table(Name = "exam_paper")]
public class ExamPaper {
public long id { get; set; }
/// <summary>
/// 考核计划ID
/// </summary>
public long AssessmentPlanId { get; set; }
/// <summary>
/// 总分
/// </summary>
public int TotalScore { get; set; }
public DateTime BeginTime { get; set; }
public DateTime? EndTime { get; set; }
//[Column(IsIgnore = true)]
//public ExamStatus Status { get; set; }
public ExamStatus Status {
get {
if (DateTime.Now <= BeginTime)
return ExamStatus.Wait;
if (BeginTime <= DateTime.Now && (!EndTime.HasValue || DateTime.Now < EndTime))
return ExamStatus.Started;
if (BeginTime <= DateTime.Now && (EndTime.HasValue && EndTime <= DateTime.Now))
return ExamStatus.End;
return ExamStatus.Wait;
}
}
}
public enum ExamStatus { Wait, Started, End }
}