diff --git a/Extensions/FreeSql.Extensions.BaseEntity/BaseEntity 纯净版源码.zip b/Extensions/FreeSql.Extensions.BaseEntity/BaseEntity 纯净版源码.zip new file mode 100644 index 00000000..ab1fb53d Binary files /dev/null and b/Extensions/FreeSql.Extensions.BaseEntity/BaseEntity 纯净版源码.zip differ diff --git a/FreeSql.Tests/FreeSql.Tests/DataAnnotations/SqlServerFluentTest.cs b/FreeSql.Tests/FreeSql.Tests/DataAnnotations/SqlServerFluentTest.cs index 67effce4..77e54ddb 100644 --- a/FreeSql.Tests/FreeSql.Tests/DataAnnotations/SqlServerFluentTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/DataAnnotations/SqlServerFluentTest.cs @@ -20,9 +20,9 @@ namespace FreeSql.Tests.DataAnnotations [Fact] public void DisableSyncStructure() { - Assert.Throws(() => _sqlserverFixture.SqlServer.Select().ToList()); + Assert.Throws(() => g.sqlserver.Select().ToList()); - _sqlserverFixture.SqlServer.Select().ToList(); + g.sqlserver.Select().ToList(); } [Table(DisableSyncStructure = true)] class ModelDisableSyncStructure @@ -39,7 +39,7 @@ namespace FreeSql.Tests.DataAnnotations [Fact] public void Fluent() { - _sqlserverFixture.SqlServer.CodeFirst + g.sqlserver.CodeFirst //.ConfigEntity(a => { // a.Name("xxdkdkdk1"); // a.Property(b => b.Id).Name("Id22").IsIdentity(true); @@ -61,21 +61,21 @@ namespace FreeSql.Tests.DataAnnotations }) ; - var ddl1 = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements(); - var ddl2 = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements(); + var ddl1 = g.sqlserver.CodeFirst.GetComparisonDDLStatements(); + var ddl2 = g.sqlserver.CodeFirst.GetComparisonDDLStatements(); - var t1id = _sqlserverFixture.SqlServer.Insert().AppendData(new TestFluenttb1 { }).ExecuteIdentity(); - var t1 = _sqlserverFixture.SqlServer.Select(t1id).ToOne(); + var t1id = g.sqlserver.Insert().AppendData(new TestFluenttb1 { }).ExecuteIdentity(); + var t1 = g.sqlserver.Select(t1id).ToOne(); - var t2lastId = _sqlserverFixture.SqlServer.Select().Max(a => a.Id); - var t2affrows = _sqlserverFixture.SqlServer.Insert().AppendData(new TestFluenttb2 { Id = t2lastId + 1 }).ExecuteAffrows(); - var t2 = _sqlserverFixture.SqlServer.Select(t2lastId + 1).ToOne(); + var t2lastId = g.sqlserver.Select().Max(a => a.Id); + var t2affrows = g.sqlserver.Insert().AppendData(new TestFluenttb2 { Id = t2lastId + 1 }).ExecuteAffrows(); + var t2 = g.sqlserver.Select(t2lastId + 1).ToOne(); } [Fact] public void GroupPrimaryKey() { - _sqlserverFixture.SqlServer.CodeFirst.SyncStructure(); + g.sqlserver.CodeFirst.SyncStructure(); g.mysql.CodeFirst.SyncStructure(); g.pgsql.CodeFirst.SyncStructure(); g.sqlite.CodeFirst.SyncStructure(); @@ -114,9 +114,9 @@ namespace FreeSql.Tests.DataAnnotations public void IsIgnore() { var item = new TestIsIgnore { }; - Assert.Equal(1, _sqlserverFixture.SqlServer.Insert().AppendData(item).ExecuteAffrows()); + Assert.Equal(1, g.sqlserver.Insert().AppendData(item).ExecuteAffrows()); - var find = _sqlserverFixture.SqlServer.Select().Where(a => a.id == item.id).First(); + var find = g.sqlserver.Select().Where(a => a.id == item.id).First(); Assert.NotNull(find); Assert.Equal(item.id, find.id); } diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerDeleteTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerDeleteTest.cs index ea3c40f9..9350ea81 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerDeleteTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerDeleteTest.cs @@ -17,7 +17,7 @@ namespace FreeSql.Tests.SqlServer _sqlserverFixture = sqlserverFixture; } - IDelete delete => _sqlserverFixture.SqlServer.Delete(); //�������� + IDelete delete => g.sqlserver.Delete(); //�������� [Table(Name = "tb_topic22211")] class Topic @@ -33,17 +33,17 @@ namespace FreeSql.Tests.SqlServer [Fact] public void Dywhere() { - Assert.Null(_sqlserverFixture.SqlServer.Delete().ToSql()); - var sql = _sqlserverFixture.SqlServer.Delete(new[] { 1, 2 }).ToSql(); + Assert.Null(g.sqlserver.Delete().ToSql()); + var sql = g.sqlserver.Delete(new[] { 1, 2 }).ToSql(); Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1 OR [Id] = 2)", sql); - sql = _sqlserverFixture.SqlServer.Delete(new Topic { Id = 1, Title = "test" }).ToSql(); + sql = g.sqlserver.Delete(new Topic { Id = 1, Title = "test" }).ToSql(); Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1)", sql); - sql = _sqlserverFixture.SqlServer.Delete(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).ToSql(); + sql = g.sqlserver.Delete(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).ToSql(); Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1 OR [Id] = 2)", sql); - sql = _sqlserverFixture.SqlServer.Delete(new { id = 1 }).ToSql(); + sql = g.sqlserver.Delete(new { id = 1 }).ToSql(); Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1)", sql); } @@ -70,18 +70,18 @@ namespace FreeSql.Tests.SqlServer public void ExecuteAffrows() { - var id = _sqlserverFixture.SqlServer.Insert(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteIdentity(); + var id = g.sqlserver.Insert(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteIdentity(); Assert.Equal(1, delete.Where(a => a.Id == id).ExecuteAffrows()); } [Fact] public void ExecuteDeleted() { - var item = _sqlserverFixture.SqlServer.Insert(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteInserted(); + var item = g.sqlserver.Insert(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteInserted(); Assert.Equal(item[0].Id, delete.Where(a => a.Id == item[0].Id).ExecuteDeleted()[0].Id); var items = Enumerable.Range(0, 301).Select(a => new Topic { Title = "xxxx" + a, CreateTime = DateTime.Now }).ToArray(); - var itemsInserted = _sqlserverFixture.SqlServer.Insert(items).ExecuteInserted(); + var itemsInserted = g.sqlserver.Insert(items).ExecuteInserted(); Assert.Equal(items.First().Title, itemsInserted[0].Title); Assert.Equal(itemsInserted[0].Id, delete.Where(a => a.Id == itemsInserted[0].Id).ExecuteDeleted()[0].Id); @@ -90,17 +90,17 @@ namespace FreeSql.Tests.SqlServer [Fact] public void AsTable() { - Assert.Null(_sqlserverFixture.SqlServer.Delete().ToSql()); - var sql = _sqlserverFixture.SqlServer.Delete(new[] { 1, 2 }).AsTable(a => "tb_topic22211AsTable").ToSql(); + Assert.Null(g.sqlserver.Delete().ToSql()); + var sql = g.sqlserver.Delete(new[] { 1, 2 }).AsTable(a => "tb_topic22211AsTable").ToSql(); Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1 OR [Id] = 2)", sql); - sql = _sqlserverFixture.SqlServer.Delete(new Topic { Id = 1, Title = "test" }).AsTable(a => "tb_topic22211AsTable").ToSql(); + sql = g.sqlserver.Delete(new Topic { Id = 1, Title = "test" }).AsTable(a => "tb_topic22211AsTable").ToSql(); Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1)", sql); - sql = _sqlserverFixture.SqlServer.Delete(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).AsTable(a => "tb_topic22211AsTable").ToSql(); + sql = g.sqlserver.Delete(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).AsTable(a => "tb_topic22211AsTable").ToSql(); Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1 OR [Id] = 2)", sql); - sql = _sqlserverFixture.SqlServer.Delete(new { id = 1 }).AsTable(a => "tb_topic22211AsTable").ToSql(); + sql = g.sqlserver.Delete(new { id = 1 }).AsTable(a => "tb_topic22211AsTable").ToSql(); Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1)", sql); } } diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerInsertTest.cs index 00a3ba88..c17a1113 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerInsertTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerInsertTest.cs @@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServer _sqlserverFixture = sqlserverFixture; } - IInsert insert => _sqlserverFixture.SqlServer.Insert(); //�������� + IInsert insert => g.sqlserver.Insert(); //�������� [Table(Name = "tb_topic")] class Topic @@ -75,12 +75,12 @@ namespace FreeSql.Tests.SqlServer sql = insert.AppendData(items).IgnoreColumns(a => new { a.Title, a.CreateTime, a.TypeGuid }).ToSql(); Assert.Equal("INSERT INTO [tb_topic]([Clicks]) VALUES(@Clicks_0), (@Clicks_1), (@Clicks_2), (@Clicks_3), (@Clicks_4), (@Clicks_5), (@Clicks_6), (@Clicks_7), (@Clicks_8), (@Clicks_9)", sql); - _sqlserverFixture.SqlServer.Delete().Where("1=1").ExecuteAffrows(); + g.sqlserver.Delete().Where("1=1").ExecuteAffrows(); var itemsIgnore = new List(); for (var a = 0; a < 2072; a++) itemsIgnore.Add(new TopicIgnore { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100, CreateTime = DateTime.Now }); - _sqlserverFixture.SqlServer.Insert().AppendData(itemsIgnore).IgnoreColumns(a => new { a.Title }).ExecuteAffrows(); + g.sqlserver.Insert().AppendData(itemsIgnore).IgnoreColumns(a => new { a.Title }).ExecuteAffrows(); Assert.Equal(2072, itemsIgnore.Count); - Assert.Equal(2072, _sqlserverFixture.SqlServer.Select().Where(a => a.Title == null).Count()); + Assert.Equal(2072, g.sqlserver.Select().Where(a => a.Title == null).Count()); } [Table(Name = "tb_topicIgnoreColumns")] class TopicIgnore @@ -98,33 +98,33 @@ namespace FreeSql.Tests.SqlServer for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100, CreateTime = DateTime.Now }); Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows()); - Assert.Equal(10, insert.AppendData(items).ExecuteAffrows()); + Assert.Equal(10, insert.AppendData(items).NoneParameter().ExecuteAffrows()); //items = Enumerable.Range(0, 9989).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList(); - //Assert.Equal(9989, _sqlserverFixture.SqlServer.Insert(items).ExecuteAffrows()); + //Assert.Equal(9989, g.sqlserver.Insert(items).ExecuteAffrows()); //var bttype = new TestBetchInsertType { title = "testbttitle1" }; - //bttype.id = (int)_sqlserverFixture.SqlServer.Insert(bttype).ExecuteIdentity(); + //bttype.id = (int)g.sqlserver.Insert(bttype).ExecuteIdentity(); //Assert.True(bttype.id > 0); //var bttopic = Enumerable.Range(0, 10000).Select(a => new TestBetchInsertTopic { TypeId = bttype.id, Text = $"testtopic{a}" }).ToArray(); - //Assert.Equal(bttopic.Length, _sqlserverFixture.SqlServer.Insert(bttopic).ExecuteAffrows()); + //Assert.Equal(bttopic.Length, g.sqlserver.Insert(bttopic).ExecuteAffrows()); - //_sqlserverFixture.SqlServer.Transaction(() => + //g.sqlserver.Transaction(() => //{ // bttype = new TestBetchInsertType { title = "transaction_testbttitle2" }; - // bttype.id = (int)_sqlserverFixture.SqlServer.Insert(bttype).ExecuteIdentity(); + // bttype.id = (int)g.sqlserver.Insert(bttype).ExecuteIdentity(); // Assert.True(bttype.id > 0); // bttopic = Enumerable.Range(0, 10000).Select(a => new TestBetchInsertTopic { TypeId = bttype.id, Text = $"transaction_testtopic{a}" }).ToArray(); - // Assert.Equal(bttopic.Length, _sqlserverFixture.SqlServer.Insert(bttopic).ExecuteAffrows()); + // Assert.Equal(bttopic.Length, g.sqlserver.Insert(bttopic).ExecuteAffrows()); //}); - _sqlserverFixture.SqlServer.Transaction(() => + g.sqlserver.Transaction(() => { var order = new AdjustPriceOrder { }; - order.Id = (int)_sqlserverFixture.SqlServer.Insert(order).NoneParameter().ExecuteIdentity(); + order.Id = (int)g.sqlserver.Insert(order).NoneParameter().ExecuteIdentity(); Assert.True(order.Id > 0); var detail = Enumerable.Range(0, 10000).Select(a => new AdjustPriceDetail { Remark = $"transaction_testdetail{a}" }).ToArray(); - Assert.Equal(detail.Length, _sqlserverFixture.SqlServer.Insert(detail).NoneParameter().ExecuteAffrows()); + Assert.Equal(detail.Length, g.sqlserver.Insert(detail).NoneParameter().ExecuteAffrows()); }); } class TestBetchInsertType { @@ -149,7 +149,7 @@ namespace FreeSql.Tests.SqlServer //items = Enumerable.Range(0, 9999).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList(); //var lastId = g.sqlite.Select().Max(a => a.Id); - //Assert.NotEqual(lastId, _sqlserverFixture.SqlServer.Insert(items).ExecuteIdentity()); + //Assert.NotEqual(lastId, g.sqlserver.Insert(items).ExecuteIdentity()); } [Fact] public void ExecuteInserted() @@ -160,7 +160,7 @@ namespace FreeSql.Tests.SqlServer var items2 = insert.AppendData(items).ExecuteInserted(); items = Enumerable.Range(0, 90).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList(); - var itemsInserted = _sqlserverFixture.SqlServer.Insert(items).ExecuteInserted(); + var itemsInserted = g.sqlserver.Insert(items).ExecuteInserted(); Assert.Equal(items.First().Title, itemsInserted.First().Title); Assert.Equal(items.Last().Title, itemsInserted.Last().Title); } diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs index e4a33fa9..a34a5924 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs @@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServer _sqlserverFixture = sqlserverFixture; } - ISelect select => _sqlserverFixture.SqlServer.Select(); + ISelect select => g.sqlserver.Select(); [Table(Name = "tb_topic22")] class Topic @@ -83,7 +83,7 @@ namespace FreeSql.Tests.SqlServer public void AsSelect() { //OneToOne、ManyToOne - var t0 = _sqlserverFixture.SqlServer.Select().Where(a => a.Parent.Parent.Name == "粤语").ToSql(); + var t0 = g.sqlserver.Select().Where(a => a.Parent.Parent.Name == "粤语").ToSql(); //SELECT a.[Id], a.[Parent_id], a__Parent.[Id] as3, a__Parent.[Parent_id] as4, a__Parent.[Ddd], a__Parent.[Name], a.[Ddd] as7, a.[Name] as8 //FROM [Tag] a //LEFT JOIN [Tag] a__Parent ON a__Parent.[Id] = a.[Parent_id] @@ -91,7 +91,7 @@ namespace FreeSql.Tests.SqlServer //WHERE (a__Parent__Parent.[Name] = '粤语') //OneToMany - var t1 = _sqlserverFixture.SqlServer.Select().Where(a => a.Tags.AsSelect().Any(t => t.Parent.Id == 10)).ToSql(); + var t1 = g.sqlserver.Select().Where(a => a.Tags.AsSelect().Any(t => t.Parent.Id == 10)).ToSql(); //SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name] //FROM [Tag] a //WHERE (exists(SELECT 1 @@ -101,7 +101,7 @@ namespace FreeSql.Tests.SqlServer // limit 0,1)) //ManyToMany - var t2 = _sqlserverFixture.SqlServer.Select().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); + var t2 = g.sqlserver.Select().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); //SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url] //FROM [Song] a //WHERE(exists(SELECT 1 @@ -116,11 +116,11 @@ namespace FreeSql.Tests.SqlServer [Fact] public void Lazy() { - var tags = _sqlserverFixture.SqlServer.Select().Where(a => a.Parent.Name == "xxx") + var tags = g.sqlserver.Select().Where(a => a.Parent.Name == "xxx") .LeftJoin(a => a.Parent_id == a.Parent.Id) .ToSql(); - var songs = _sqlserverFixture.SqlServer.Select().Limit(10).ToList(); + var songs = g.sqlserver.Select().Limit(10).ToList(); } @@ -130,12 +130,12 @@ namespace FreeSql.Tests.SqlServer var items = new List(); for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100, CreateTime = DateTime.Now }); - Assert.Single(_sqlserverFixture.SqlServer.Insert().AppendData(items.First()).ExecuteInserted()); - Assert.Equal(10, _sqlserverFixture.SqlServer.Insert().AppendData(items).ExecuteInserted().Count); + Assert.Single(g.sqlserver.Insert().AppendData(items.First()).ExecuteInserted()); + Assert.Equal(10, g.sqlserver.Insert().AppendData(items).ExecuteInserted().Count); //items = Enumerable.Range(0, 9989).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList(); //; - //Assert.Equal(9989, _sqlserverFixture.SqlServer.Insert(items).NoneParameter().ExecuteAffrows()); + //Assert.Equal(9989, g.sqlserver.Insert(items).NoneParameter().ExecuteAffrows()); var dt1 = select.Limit(10).ToDataTable(); var dt2 = select.Limit(10).ToDataTable("id, getdate()"); @@ -160,9 +160,9 @@ namespace FreeSql.Tests.SqlServer var testDto33 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto { }); var testDto44 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto() { }); - _sqlserverFixture.SqlServer.Insert().AppendData(new TestGuidIdToList()).ExecuteAffrows(); - var testGuidId5 = _sqlserverFixture.SqlServer.Select().ToList(); - var testGuidId6 = _sqlserverFixture.SqlServer.Select().ToList(a => a.id); + g.sqlserver.Insert().AppendData(new TestGuidIdToList()).ExecuteAffrows(); + var testGuidId5 = g.sqlserver.Select().ToList(); + var testGuidId6 = g.sqlserver.Select().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); @@ -659,8 +659,8 @@ namespace FreeSql.Tests.SqlServer ccc3 = a.Max(a.Value.Item3.Id) }); - var testpid1 = _sqlserverFixture.SqlServer.Insert().AppendData(new TestTypeInfo { Name = "Name" + DateTime.Now.ToString("yyyyMMddHHmmss") }).ExecuteIdentity(); - _sqlserverFixture.SqlServer.Insert().AppendData(new TestInfo { Title = "Title" + DateTime.Now.ToString("yyyyMMddHHmmss"), CreateTime = DateTime.Now, TypeGuid = (int)testpid1 }).ExecuteAffrows(); + var testpid1 = g.sqlserver.Insert().AppendData(new TestTypeInfo { Name = "Name" + DateTime.Now.ToString("yyyyMMddHHmmss") }).ExecuteIdentity(); + g.sqlserver.Insert().AppendData(new TestInfo { Title = "Title" + DateTime.Now.ToString("yyyyMMddHHmmss"), CreateTime = DateTime.Now, TypeGuid = (int)testpid1 }).ExecuteAffrows(); var aggsql1 = select .GroupBy(a => a.Title) @@ -919,16 +919,16 @@ namespace FreeSql.Tests.SqlServer public void Include_OneToMany() { var model1 = new TestInclude_OneToManyModel1 { m1name = DateTime.Now.Second.ToString() }; - model1.id = (int)_sqlserverFixture.SqlServer.Insert(model1).ExecuteIdentity(); + model1.id = (int)g.sqlserver.Insert(model1).ExecuteIdentity(); var model2 = new TestInclude_OneToManyModel2 { model2id = model1.id, m2setting = DateTime.Now.Second.ToString() }; - _sqlserverFixture.SqlServer.Insert(model2).ExecuteAffrows(); + g.sqlserver.Insert(model2).ExecuteAffrows(); var model3_1 = new TestInclude_OneToManyModel3 { model2111Idaaa = model1.id, title = "testmodel3__111" }; - model3_1.id = (int)_sqlserverFixture.SqlServer.Insert(model3_1).ExecuteIdentity(); + model3_1.id = (int)g.sqlserver.Insert(model3_1).ExecuteIdentity(); var model3_2 = new TestInclude_OneToManyModel3 { model2111Idaaa = model1.id, title = "testmodel3__222" }; - model3_2.id = (int)_sqlserverFixture.SqlServer.Insert(model3_2).ExecuteIdentity(); + model3_2.id = (int)g.sqlserver.Insert(model3_2).ExecuteIdentity(); var model3_3 = new TestInclude_OneToManyModel3 { model2111Idaaa = model1.id, title = "testmodel3__333" }; - model3_3.id = (int)_sqlserverFixture.SqlServer.Insert(model3_2).ExecuteIdentity(); + model3_3.id = (int)g.sqlserver.Insert(model3_2).ExecuteIdentity(); var model4s = new[] { new TestInclude_OneToManyModel4{ model3333Id333 = model3_1.id, title444 = "testmodel3_4__111" }, @@ -937,35 +937,35 @@ namespace FreeSql.Tests.SqlServer new TestInclude_OneToManyModel4{ model3333Id333 = model3_2.id, title444 = "testmodel3_4__222" }, new TestInclude_OneToManyModel4{ model3333Id333 = model3_2.id, title444 = "testmodel3_4__333" } }; - Assert.Equal(5, _sqlserverFixture.SqlServer.Insert(model4s).ExecuteAffrows()); + Assert.Equal(5, g.sqlserver.Insert(model4s).ExecuteAffrows()); - var t0 = _sqlserverFixture.SqlServer.Select() + var t0 = g.sqlserver.Select() .IncludeMany(a => a.childs.Where(m3 => m3.model2111Idaaa == a.model2id)) .Where(a => a.model2id <= model1.id) .ToList(); - var t1 = _sqlserverFixture.SqlServer.Select() + var t1 = g.sqlserver.Select() .IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id)) .Where(a => a.id <= model1.id) .ToList(); - var t2 = _sqlserverFixture.SqlServer.Select() + var t2 = g.sqlserver.Select() .IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id), then => then.IncludeMany(m3 => m3.childs2.Where(m4 => m4.model3333Id333 == m3.id))) .Where(a => a.id <= model1.id) .ToList(); - var t00 = _sqlserverFixture.SqlServer.Select() + var t00 = g.sqlserver.Select() .IncludeMany(a => a.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2id)) .Where(a => a.model2id <= model1.id) .ToList(); - var t11 = _sqlserverFixture.SqlServer.Select() + var t11 = g.sqlserver.Select() .IncludeMany(a => a.model2.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2.model2id)) .Where(a => a.id <= model1.id) .ToList(); - var t22 = _sqlserverFixture.SqlServer.Select() + var t22 = g.sqlserver.Select() .IncludeMany(a => a.model2.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2.model2id), then => then.IncludeMany(m3 => m3.childs2.Take(2).Where(m4 => m4.model3333Id333 == m3.id))) .Where(a => a.id <= model1.id) @@ -1038,7 +1038,7 @@ namespace FreeSql.Tests.SqlServer { string setting = "x"; var model2 = new TestInclude_OneToManyModel22 { m2setting = DateTime.Now.Second.ToString(), aaa = "aaa" + DateTime.Now.Second, bbb = "bbb" + DateTime.Now.Second }; - model2.id = (int)_sqlserverFixture.SqlServer.Insert(model2).ExecuteIdentity(); + model2.id = (int)g.sqlserver.Insert(model2).ExecuteIdentity(); var model3s = new[] { @@ -1046,18 +1046,18 @@ namespace FreeSql.Tests.SqlServer new TestInclude_OneToManyModel33 {model2Id = model2.id, title = "testmodel3__222", setting = setting}, new TestInclude_OneToManyModel33 {model2Id = model2.id, title = "testmodel3__333", setting = setting} }; - Assert.Equal(3, _sqlserverFixture.SqlServer.Insert(model3s).ExecuteAffrows()); + Assert.Equal(3, g.sqlserver.Insert(model3s).ExecuteAffrows()); var model1 = new TestInclude_OneToManyModel11 { m1name = DateTime.Now.Second.ToString(), model2id = model2.id, m3setting = setting }; - model1.id = (int)_sqlserverFixture.SqlServer.Insert(model1).ExecuteIdentity(); + model1.id = (int)g.sqlserver.Insert(model1).ExecuteIdentity(); - var t1 = _sqlserverFixture.SqlServer.Select() + var t1 = g.sqlserver.Select() .LeftJoin(a => a.model2id == a.model2.id) .IncludeMany(a => a.model2.childs.Where(m3 => m3.model2Id == a.model2.id && m3.setting == a.m3setting)) .Where(a => a.id <= model1.id) .ToList(true); - var t11 = _sqlserverFixture.SqlServer.Select() + var t11 = g.sqlserver.Select() .LeftJoin(a => a.model2id == a.model2.id) .IncludeMany(a => a.model2.childs.Take(1).Where(m3 => m3.model2Id == a.model2.id && m3.setting == a.m3setting)) .Where(a => a.id <= model1.id) @@ -1086,56 +1086,56 @@ namespace FreeSql.Tests.SqlServer Ddd = DateTime.Now.Second, Name = "test_oneToChilds_01_中国" }; - tag1.Id = (int)_sqlserverFixture.SqlServer.Insert(tag1).ExecuteIdentity(); + tag1.Id = (int)g.sqlserver.Insert(tag1).ExecuteIdentity(); var tag1_1 = new Tag { Parent_id = tag1.Id, Ddd = DateTime.Now.Second, Name = "test_oneToChilds_01_北京" }; - tag1_1.Id = (int)_sqlserverFixture.SqlServer.Insert(tag1_1).ExecuteIdentity(); + tag1_1.Id = (int)g.sqlserver.Insert(tag1_1).ExecuteIdentity(); var tag1_2 = new Tag { Parent_id = tag1.Id, Ddd = DateTime.Now.Second, Name = "test_oneToChilds_01_上海" }; - tag1_2.Id = (int)_sqlserverFixture.SqlServer.Insert(tag1_2).ExecuteIdentity(); + tag1_2.Id = (int)g.sqlserver.Insert(tag1_2).ExecuteIdentity(); var tag2 = new Tag { Ddd = DateTime.Now.Second, Name = "test_oneToChilds_02_美国" }; - tag2.Id = (int)_sqlserverFixture.SqlServer.Insert(tag2).ExecuteIdentity(); + tag2.Id = (int)g.sqlserver.Insert(tag2).ExecuteIdentity(); var tag2_1 = new Tag { Parent_id = tag2.Id, Ddd = DateTime.Now.Second, Name = "test_oneToChilds_02_纽约" }; - tag2_1.Id = (int)_sqlserverFixture.SqlServer.Insert(tag2_1).ExecuteIdentity(); + tag2_1.Id = (int)g.sqlserver.Insert(tag2_1).ExecuteIdentity(); var tag2_2 = new Tag { Parent_id = tag2.Id, Ddd = DateTime.Now.Second, Name = "test_oneToChilds_02_华盛顿" }; - tag2_2.Id = (int)_sqlserverFixture.SqlServer.Insert(tag2_2).ExecuteIdentity(); + tag2_2.Id = (int)g.sqlserver.Insert(tag2_2).ExecuteIdentity(); - var tags0 = _sqlserverFixture.SqlServer.Select() + var tags0 = g.sqlserver.Select() .Include(a => a.Parent) .Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .ToList(); - var tags1 = _sqlserverFixture.SqlServer.Select() + var tags1 = g.sqlserver.Select() .IncludeMany(a => a.Tags) .Include(a => a.Parent) .IncludeMany(a => a.Songs) .Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .ToList(); - var tags2 = _sqlserverFixture.SqlServer.Select() + var tags2 = g.sqlserver.Select() .IncludeMany(a => a.Tags, then => then.Include(a => a.Parent).IncludeMany(a => a.Songs)) .Include(a => a.Parent) @@ -1143,7 +1143,7 @@ namespace FreeSql.Tests.SqlServer .Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .ToList(); - var tags3 = _sqlserverFixture.SqlServer.Select() + var tags3 = g.sqlserver.Select() .IncludeMany(a => a.Tags, then => then.Include(a => a.Parent).IncludeMany(a => a.Songs).IncludeMany(a => a.Tags)) .Include(a => a.Parent) @@ -1151,14 +1151,14 @@ namespace FreeSql.Tests.SqlServer .Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .ToList(); - var tags11 = _sqlserverFixture.SqlServer.Select() + var tags11 = g.sqlserver.Select() .IncludeMany(a => a.Tags.Take(1)) .Include(a => a.Parent) .IncludeMany(a => a.Songs.Take(1)) .Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .ToList(); - var tags22 = _sqlserverFixture.SqlServer.Select() + var tags22 = g.sqlserver.Select() .IncludeMany(a => a.Tags.Take(1), then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1))) .Include(a => a.Parent) @@ -1166,7 +1166,7 @@ namespace FreeSql.Tests.SqlServer .Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .ToList(); - var tags33 = _sqlserverFixture.SqlServer.Select() + var tags33 = g.sqlserver.Select() .IncludeMany(a => a.Tags.Take(1), then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)).IncludeMany(a => a.Tags.Take(1))) .Include(a => a.Parent) @@ -1237,19 +1237,19 @@ namespace FreeSql.Tests.SqlServer Ddd = DateTime.Now.Second, Name = "test_manytoMany_01_中国" }; - tag1.Id = (int)_sqlserverFixture.SqlServer.Insert(tag1).ExecuteIdentity(); + tag1.Id = (int)g.sqlserver.Insert(tag1).ExecuteIdentity(); var tag2 = new Tag { Ddd = DateTime.Now.Second, Name = "test_manytoMany_02_美国" }; - tag2.Id = (int)_sqlserverFixture.SqlServer.Insert(tag2).ExecuteIdentity(); + tag2.Id = (int)g.sqlserver.Insert(tag2).ExecuteIdentity(); var tag3 = new Tag { Ddd = DateTime.Now.Second, Name = "test_manytoMany_03_日本" }; - tag3.Id = (int)_sqlserverFixture.SqlServer.Insert(tag3).ExecuteIdentity(); + tag3.Id = (int)g.sqlserver.Insert(tag3).ExecuteIdentity(); var song1 = new Song { @@ -1257,30 +1257,30 @@ namespace FreeSql.Tests.SqlServer Title = "test_manytoMany_01_我是中国人.mp3", Url = "http://ww.baidu.com/" }; - song1.Id = (int)_sqlserverFixture.SqlServer.Insert(song1).ExecuteIdentity(); + song1.Id = (int)g.sqlserver.Insert(song1).ExecuteIdentity(); var song2 = new Song { Create_time = DateTime.Now, Title = "test_manytoMany_02_爱你一万年.mp3", Url = "http://ww.163.com/" }; - song2.Id = (int)_sqlserverFixture.SqlServer.Insert(song2).ExecuteIdentity(); + song2.Id = (int)g.sqlserver.Insert(song2).ExecuteIdentity(); var song3 = new Song { Create_time = DateTime.Now, Title = "test_manytoMany_03_千年等一回.mp3", Url = "http://ww.sina.com/" }; - song3.Id = (int)_sqlserverFixture.SqlServer.Insert(song3).ExecuteIdentity(); + song3.Id = (int)g.sqlserver.Insert(song3).ExecuteIdentity(); - _sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song1.Id, Tag_id = tag1.Id }).ExecuteAffrows(); - _sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song2.Id, Tag_id = tag1.Id }).ExecuteAffrows(); - _sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag1.Id }).ExecuteAffrows(); - _sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song1.Id, Tag_id = tag2.Id }).ExecuteAffrows(); - _sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag2.Id }).ExecuteAffrows(); - _sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag3.Id }).ExecuteAffrows(); + g.sqlserver.Insert(new Song_tag { Song_id = song1.Id, Tag_id = tag1.Id }).ExecuteAffrows(); + g.sqlserver.Insert(new Song_tag { Song_id = song2.Id, Tag_id = tag1.Id }).ExecuteAffrows(); + g.sqlserver.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag1.Id }).ExecuteAffrows(); + g.sqlserver.Insert(new Song_tag { Song_id = song1.Id, Tag_id = tag2.Id }).ExecuteAffrows(); + g.sqlserver.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag2.Id }).ExecuteAffrows(); + g.sqlserver.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag3.Id }).ExecuteAffrows(); - var songs1 = _sqlserverFixture.SqlServer.Select() + var songs1 = g.sqlserver.Select() .IncludeMany(a => a.Tags) .Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id) .ToList(); @@ -1289,7 +1289,7 @@ namespace FreeSql.Tests.SqlServer Assert.Equal(1, songs1[1].Tags.Count); Assert.Equal(3, songs1[2].Tags.Count); - var songs2 = _sqlserverFixture.SqlServer.Select() + var songs2 = g.sqlserver.Select() .IncludeMany(a => a.Tags, then => then.IncludeMany(t => t.Songs)) .Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id) @@ -1299,14 +1299,14 @@ namespace FreeSql.Tests.SqlServer Assert.Equal(1, songs2[1].Tags.Count); Assert.Equal(3, songs2[2].Tags.Count); - var tags3 = _sqlserverFixture.SqlServer.Select() + var tags3 = g.sqlserver.Select() .Include(a => a.Tag.Parent) .IncludeMany(a => a.Tag.Songs) .Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id) .ToList(true); - var songs11 = _sqlserverFixture.SqlServer.Select() + var songs11 = g.sqlserver.Select() .IncludeMany(a => a.Tags.Take(1)) .Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id) .ToList(); @@ -1315,7 +1315,7 @@ namespace FreeSql.Tests.SqlServer Assert.Equal(1, songs11[1].Tags.Count); Assert.Equal(1, songs11[2].Tags.Count); - var songs22 = _sqlserverFixture.SqlServer.Select() + var songs22 = g.sqlserver.Select() .IncludeMany(a => a.Tags.Take(1), then => then.IncludeMany(t => t.Songs.Take(1))) .Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id) @@ -1325,7 +1325,7 @@ namespace FreeSql.Tests.SqlServer Assert.Equal(1, songs22[1].Tags.Count); Assert.Equal(1, songs22[2].Tags.Count); - var tags33 = _sqlserverFixture.SqlServer.Select() + var tags33 = g.sqlserver.Select() .Include(a => a.Tag.Parent) .IncludeMany(a => a.Tag.Songs.Take(1)) .Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id) diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerUpdateTest.cs index 8ca8a169..ad22de5e 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerUpdateTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerUpdateTest.cs @@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServer _sqlserverFixture = sqlserverFixture; } - IUpdate update => _sqlserverFixture.SqlServer.Update(); + IUpdate update => g.sqlserver.Update(); [Table(Name = "tb_topic")] class Topic @@ -35,11 +35,11 @@ namespace FreeSql.Tests.SqlServer [Fact] public void Dywhere() { - Assert.Null(_sqlserverFixture.SqlServer.Update().ToSql()); - Assert.Equal("UPDATE [tb_topic] SET title='test' \r\nWHERE ([Id] = 1 OR [Id] = 2)", _sqlserverFixture.SqlServer.Update(new[] { 1, 2 }).SetRaw("title='test'").ToSql()); - Assert.Equal("UPDATE [tb_topic] SET title='test1' \r\nWHERE ([Id] = 1)", _sqlserverFixture.SqlServer.Update(new Topic { Id = 1, Title = "test" }).SetRaw("title='test1'").ToSql()); - Assert.Equal("UPDATE [tb_topic] SET title='test1' \r\nWHERE ([Id] = 1 OR [Id] = 2)", _sqlserverFixture.SqlServer.Update(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).SetRaw("title='test1'").ToSql()); - Assert.Equal("UPDATE [tb_topic] SET title='test1' \r\nWHERE ([Id] = 1)", _sqlserverFixture.SqlServer.Update(new { id = 1 }).SetRaw("title='test1'").ToSql()); + Assert.Null(g.sqlserver.Update().ToSql()); + Assert.Equal("UPDATE [tb_topic] SET title='test' \r\nWHERE ([Id] = 1 OR [Id] = 2)", g.sqlserver.Update(new[] { 1, 2 }).SetRaw("title='test'").ToSql()); + Assert.Equal("UPDATE [tb_topic] SET title='test1' \r\nWHERE ([Id] = 1)", g.sqlserver.Update(new Topic { Id = 1, Title = "test" }).SetRaw("title='test1'").ToSql()); + Assert.Equal("UPDATE [tb_topic] SET title='test1' \r\nWHERE ([Id] = 1 OR [Id] = 2)", g.sqlserver.Update(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).SetRaw("title='test1'").ToSql()); + Assert.Equal("UPDATE [tb_topic] SET title='test1' \r\nWHERE ([Id] = 1)", g.sqlserver.Update(new { id = 1 }).SetRaw("title='test1'").ToSql()); } [Fact] @@ -140,26 +140,26 @@ namespace FreeSql.Tests.SqlServer [Fact] public void ExecuteUpdated() { - _sqlserverFixture.SqlServer.Insert().AppendData(new Topic()).ExecuteAffrows(); - _sqlserverFixture.SqlServer.Insert().AppendData(new Topic()).ExecuteAffrows(); - _sqlserverFixture.SqlServer.Insert().AppendData(new Topic()).ExecuteAffrows(); - _sqlserverFixture.SqlServer.Insert().AppendData(new Topic()).ExecuteAffrows(); + g.sqlserver.Insert().AppendData(new Topic()).ExecuteAffrows(); + g.sqlserver.Insert().AppendData(new Topic()).ExecuteAffrows(); + g.sqlserver.Insert().AppendData(new Topic()).ExecuteAffrows(); + g.sqlserver.Insert().AppendData(new Topic()).ExecuteAffrows(); - var items = _sqlserverFixture.SqlServer.Select().Limit(2).ToList(); - _sqlserverFixture.SqlServer.Update(items).SetRaw("title='test'").ExecuteUpdated(); + var items = g.sqlserver.Select().Limit(2).ToList(); + g.sqlserver.Update(items).SetRaw("title='test'").ExecuteUpdated(); - items = _sqlserverFixture.SqlServer.Select().Limit(2).ToList(); - var result = _sqlserverFixture.SqlServer.Update(items).SetRaw("title='test'").ExecuteUpdatedAsync().Result; + items = g.sqlserver.Select().Limit(2).ToList(); + var result = g.sqlserver.Update(items).SetRaw("title='test'").ExecuteUpdatedAsync().Result; } [Fact] public void AsTable() { - Assert.Null(_sqlserverFixture.SqlServer.Update().ToSql()); - Assert.Equal("UPDATE [tb_topicAsTable] SET title='test' \r\nWHERE ([Id] = 1 OR [Id] = 2)", _sqlserverFixture.SqlServer.Update(new[] { 1, 2 }).SetRaw("title='test'").AsTable(a => "tb_topicAsTable").ToSql()); - Assert.Equal("UPDATE [tb_topicAsTable] SET title='test1' \r\nWHERE ([Id] = 1)", _sqlserverFixture.SqlServer.Update(new Topic { Id = 1, Title = "test" }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql()); - Assert.Equal("UPDATE [tb_topicAsTable] SET title='test1' \r\nWHERE ([Id] = 1 OR [Id] = 2)", _sqlserverFixture.SqlServer.Update(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql()); - Assert.Equal("UPDATE [tb_topicAsTable] SET title='test1' \r\nWHERE ([Id] = 1)", _sqlserverFixture.SqlServer.Update(new { id = 1 }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql()); + Assert.Null(g.sqlserver.Update().ToSql()); + Assert.Equal("UPDATE [tb_topicAsTable] SET title='test' \r\nWHERE ([Id] = 1 OR [Id] = 2)", g.sqlserver.Update(new[] { 1, 2 }).SetRaw("title='test'").AsTable(a => "tb_topicAsTable").ToSql()); + Assert.Equal("UPDATE [tb_topicAsTable] SET title='test1' \r\nWHERE ([Id] = 1)", g.sqlserver.Update(new Topic { Id = 1, Title = "test" }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql()); + Assert.Equal("UPDATE [tb_topicAsTable] SET title='test1' \r\nWHERE ([Id] = 1 OR [Id] = 2)", g.sqlserver.Update(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql()); + Assert.Equal("UPDATE [tb_topicAsTable] SET title='test1' \r\nWHERE ([Id] = 1)", g.sqlserver.Update(new { id = 1 }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql()); } } } diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/BoolNullableTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/BoolNullableTest.cs index aa6468a1..ad683985 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/BoolNullableTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/BoolNullableTest.cs @@ -73,7 +73,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Bool() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tobool == true).First(); @@ -155,7 +155,7 @@ namespace FreeSql.Tests.SqlServerMapType public void SByte() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tosbyte == true).First(); @@ -237,7 +237,7 @@ namespace FreeSql.Tests.SqlServerMapType public void SByteNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tosbytenullable == true).First(); @@ -319,7 +319,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Short() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toshort == true).First(); @@ -401,7 +401,7 @@ namespace FreeSql.Tests.SqlServerMapType public void ShortNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toshortnullable == true).First(); @@ -483,7 +483,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Int() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toint == true).First(); @@ -565,7 +565,7 @@ namespace FreeSql.Tests.SqlServerMapType public void IntNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tointnullable == true).First(); @@ -647,7 +647,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Long() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tolong == true).First(); @@ -729,7 +729,7 @@ namespace FreeSql.Tests.SqlServerMapType public void LongNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tolongnullable == true).First(); @@ -812,7 +812,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Byte() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tobyte == true).First(); @@ -894,7 +894,7 @@ namespace FreeSql.Tests.SqlServerMapType public void ByteNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tobytenullable == true).First(); @@ -976,7 +976,7 @@ namespace FreeSql.Tests.SqlServerMapType public void UShort() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toushort == true).First(); @@ -1058,7 +1058,7 @@ namespace FreeSql.Tests.SqlServerMapType public void UShortNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toushortnullable == true).First(); @@ -1140,7 +1140,7 @@ namespace FreeSql.Tests.SqlServerMapType public void UInt() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.touint == true).First(); @@ -1222,7 +1222,7 @@ namespace FreeSql.Tests.SqlServerMapType public void UIntNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.touintnullable == true).First(); @@ -1304,7 +1304,7 @@ namespace FreeSql.Tests.SqlServerMapType public void ULong() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toulong == true).First(); @@ -1386,7 +1386,7 @@ namespace FreeSql.Tests.SqlServerMapType public void ULongNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toulongnullable == true).First(); @@ -1490,7 +1490,7 @@ namespace FreeSql.Tests.SqlServerMapType public void String() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolNullableMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tostring == true).First(); diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/BoolTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/BoolTest.cs index dd843638..9d3e5d46 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/BoolTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/BoolTest.cs @@ -74,7 +74,7 @@ namespace FreeSql.Tests.SqlServerMapType public void BoolNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toboolnullable == true).First(); @@ -130,7 +130,7 @@ namespace FreeSql.Tests.SqlServerMapType public void SByte() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tosbyte == true).First(); @@ -186,7 +186,7 @@ namespace FreeSql.Tests.SqlServerMapType public void SByteNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tosbytenullable == true).First(); @@ -242,7 +242,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Short() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toshort == true).First(); @@ -298,7 +298,7 @@ namespace FreeSql.Tests.SqlServerMapType public void ShortNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toshortnullable == true).First(); @@ -354,7 +354,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Int() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toint == true).First(); @@ -410,7 +410,7 @@ namespace FreeSql.Tests.SqlServerMapType public void IntNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tointnullable == true).First(); @@ -466,7 +466,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Long() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tolong == true).First(); @@ -522,7 +522,7 @@ namespace FreeSql.Tests.SqlServerMapType public void LongNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tolongnullable == true).First(); @@ -579,7 +579,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Byte() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tobyte == true).First(); @@ -635,7 +635,7 @@ namespace FreeSql.Tests.SqlServerMapType public void ByteNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tobytenullable == true).First(); @@ -691,7 +691,7 @@ namespace FreeSql.Tests.SqlServerMapType public void UShort() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toushort == true).First(); @@ -747,7 +747,7 @@ namespace FreeSql.Tests.SqlServerMapType public void UShortNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toushortnullable == true).First(); @@ -803,7 +803,7 @@ namespace FreeSql.Tests.SqlServerMapType public void UInt() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.touint == true).First(); @@ -859,7 +859,7 @@ namespace FreeSql.Tests.SqlServerMapType public void UIntNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.touintnullable == true).First(); @@ -915,7 +915,7 @@ namespace FreeSql.Tests.SqlServerMapType public void ULong() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toulong == true).First(); @@ -971,7 +971,7 @@ namespace FreeSql.Tests.SqlServerMapType public void ULongNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.toulongnullable == true).First(); @@ -1049,7 +1049,7 @@ namespace FreeSql.Tests.SqlServerMapType public void String() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new BoolMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.tostring == true).First(); diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/EnumTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/EnumTest.cs index 49e629b6..3d657684 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/EnumTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/EnumTest.cs @@ -36,7 +36,7 @@ namespace FreeSql.Tests.SqlServerMapType public void EnumToString() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new EnumTestMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.й).First(); @@ -93,7 +93,7 @@ namespace FreeSql.Tests.SqlServerMapType public void EnumNullableToString() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new EnumTestMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.enumnullable_to_string == null).First(); @@ -154,7 +154,7 @@ namespace FreeSql.Tests.SqlServerMapType public void EnumToInt() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new EnumTestMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.й).First(); @@ -211,7 +211,7 @@ namespace FreeSql.Tests.SqlServerMapType public void EnumNullableToInt() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new EnumTestMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.enumnullable_to_int == null).First(); diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/ToStringTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/ToStringTest.cs index 1d5a1c3c..ab17e685 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/ToStringTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/MapType/ToStringTest.cs @@ -50,7 +50,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Enum1() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.й).First(); @@ -107,7 +107,7 @@ namespace FreeSql.Tests.SqlServerMapType public void EnumNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.enumnullable_to_string == null).First(); @@ -167,7 +167,7 @@ namespace FreeSql.Tests.SqlServerMapType public void BigInteger1() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.biginteger_to_string == 0).First(); @@ -224,7 +224,7 @@ namespace FreeSql.Tests.SqlServerMapType public void BigIntegerNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.bigintegernullable_to_string == null).First(); @@ -284,7 +284,7 @@ namespace FreeSql.Tests.SqlServerMapType public void TimeSpan1() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id).First(); @@ -325,7 +325,7 @@ namespace FreeSql.Tests.SqlServerMapType public void TimeSpanNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id).First(); @@ -380,7 +380,7 @@ namespace FreeSql.Tests.SqlServerMapType public void DateTime1() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id).First(); @@ -421,7 +421,7 @@ namespace FreeSql.Tests.SqlServerMapType public void DateTimeNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id).First(); @@ -477,7 +477,7 @@ namespace FreeSql.Tests.SqlServerMapType public void Guid1() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.guid_to_string == Guid.Empty).First(); @@ -521,7 +521,7 @@ namespace FreeSql.Tests.SqlServerMapType public void GuidNullable() { //insert - var orm = _sqlserverFixture.SqlServer; + var orm = g.sqlserver; var item = new ToStringMap { }; Assert.Equal(1, orm.Insert().AppendData(item).ExecuteAffrows()); var find = orm.Select().Where(a => a.id == item.id && a.guidnullable_to_string == null).First(); diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs index 95a6006c..31d25d6a 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs @@ -18,13 +18,13 @@ namespace FreeSql.Tests.SqlServer [Fact] public void Pool() { - var t1 = _sqlserverFixture.SqlServer.Ado.MasterPool.StatisticsFullily; + var t1 = g.sqlserver.Ado.MasterPool.StatisticsFullily; } [Fact] public void SlavePools() { - var t2 = _sqlserverFixture.SqlServer.Ado.SlavePools.Count; + var t2 = g.sqlserver.Ado.SlavePools.Count; } [Fact] @@ -52,42 +52,42 @@ namespace FreeSql.Tests.SqlServer public void Query() { - //var tt1 = _sqlserverFixture.SqlServer.Select() + //var tt1 = g.sqlserver.Select() // .LeftJoin(a => a.ParentId == a.Parent.Id) // .ToSql(a => new { a.Id, a.Title }); - //var tt2result = _sqlserverFixture.SqlServer.Select() + //var tt2result = g.sqlserver.Select() // .LeftJoin(a => a.ParentId == a.Parent.Id) // .ToList(a => new { a.Id, a.Title }); - //var tt = _sqlserverFixture.SqlServer.Select() + //var tt = g.sqlserver.Select() // .LeftJoin((a, b) => b.Id == a.Id) // .ToSql(a => new { a.Id, a.Title }); - //var ttresult = _sqlserverFixture.SqlServer.Select() + //var ttresult = g.sqlserver.Select() // .LeftJoin((a, b) => b.Id == a.Id) // .ToList(a => new { a.Id, a.Title }); - var tnsql1 = _sqlserverFixture.SqlServer.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id); - var tnsql2 = _sqlserverFixture.SqlServer.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToSql(a => a.Id); + var tnsql1 = g.sqlserver.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id); + var tnsql2 = g.sqlserver.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToSql(a => a.Id); - var tn1 = _sqlserverFixture.SqlServer.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToList(a => a.Id); - var tn2 = _sqlserverFixture.SqlServer.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToList(a => a.Id); + var tn1 = g.sqlserver.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToList(a => a.Id); + var tn2 = g.sqlserver.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToList(a => a.Id); - var t3 = _sqlserverFixture.SqlServer.Ado.Query("select * from xxx"); + var t3 = g.sqlserver.Ado.Query("select * from xxx"); - var t4 = _sqlserverFixture.SqlServer.Ado.Query<(int, int, string, string DateTime)>("select * from xxx"); + var t4 = g.sqlserver.Ado.Query<(int, int, string, string DateTime)>("select * from xxx"); - var t5 = _sqlserverFixture.SqlServer.Ado.Query(System.Data.CommandType.Text, "select * from xxx where Id = @Id", + var t5 = g.sqlserver.Ado.Query(System.Data.CommandType.Text, "select * from xxx where Id = @Id", new System.Data.SqlClient.SqlParameter("Id", 1)); } [Fact] public void QueryMultipline() { - var tnsql1 = _sqlserverFixture.SqlServer.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id); + var tnsql1 = g.sqlserver.Select().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id); - var t3 = _sqlserverFixture.SqlServer.Ado.Query("select * from xxx; select * from xxx; select * from xxx"); + var t3 = g.sqlserver.Ado.Query("select * from xxx; select * from xxx; select * from xxx"); } class xxx diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs index 6772988d..179d32e3 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs @@ -9,32 +9,23 @@ using Xunit; namespace FreeSql.Tests.SqlServer { - - [Collection("SqlServerCollection")] public class SqlServerCodeFirstTest { - SqlServerFixture _sqlserverFixture; - - public SqlServerCodeFirstTest(SqlServerFixture sqlserverFixture) - { - _sqlserverFixture = sqlserverFixture; - } - [Fact] public void ı_ֶ() { - var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<ı>(); - _sqlserverFixture.SqlServer.CodeFirst.SyncStructure<ı>(); + var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<ı>(); + g.sqlserver.CodeFirst.SyncStructure<ı>(); var item = new ı { = "Ա", ʱ = DateTime.Now }; - Assert.Equal(1, _sqlserverFixture.SqlServer.Insert<ı>().AppendData(item).ExecuteAffrows()); + Assert.Equal(1, g.sqlserver.Insert<ı>().AppendData(item).ExecuteAffrows()); Assert.NotEqual(Guid.Empty, item.); - var item2 = _sqlserverFixture.SqlServer.Select<ı>().Where(a => a. == item.).First(); + var item2 = g.sqlserver.Select<ı>().Where(a => a. == item.).First(); Assert.NotNull(item2); Assert.Equal(item., item2.); Assert.Equal(item., item2.); @@ -53,8 +44,8 @@ namespace FreeSql.Tests.SqlServer [Fact] public void AddUniques() { - var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements(); - _sqlserverFixture.SqlServer.CodeFirst.SyncStructure(); + var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements(); + g.sqlserver.CodeFirst.SyncStructure(); } [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")] [Index("uk_phone", "phone", true)] @@ -73,9 +64,9 @@ namespace FreeSql.Tests.SqlServer [Fact] public void AddField() { - var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements(); + var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements(); - var id = _sqlserverFixture.SqlServer.Insert().AppendData(new TopicAddField { }).ExecuteIdentity(); + var id = g.sqlserver.Insert().AppendData(new TopicAddField { }).ExecuteIdentity(); } [Table(Name = "dbo2.TopicAddField", OldName = "tedb1.dbo.TopicAddField")] @@ -103,13 +94,13 @@ namespace FreeSql.Tests.SqlServer public void GetComparisonDDLStatements() { - var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements(); + var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements(); - sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements(); + sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements(); } - IInsert insert => _sqlserverFixture.SqlServer.Insert(); - ISelect select => _sqlserverFixture.SqlServer.Select(); + IInsert insert => g.sqlserver.Insert(); + ISelect select => g.sqlserver.Select(); [Fact] public void CurdAllField() diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerDbFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerDbFirstTest.cs index 43227e68..c78eebe7 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerDbFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerDbFirstTest.cs @@ -20,7 +20,7 @@ namespace FreeSql.Tests.SqlServer public void GetDatabases() { - var t1 = _sqlserverFixture.SqlServer.DbFirst.GetDatabases(); + var t1 = g.sqlserver.DbFirst.GetDatabases(); } @@ -28,7 +28,7 @@ namespace FreeSql.Tests.SqlServer public void GetTablesByDatabase() { - var t2 = _sqlserverFixture.SqlServer.DbFirst.GetTablesByDatabase(); + var t2 = g.sqlserver.DbFirst.GetTablesByDatabase(); } } diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/ConvertTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/ConvertTest.cs index 824ce26f..e640b63a 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/ConvertTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/ConvertTest.cs @@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression _sqlserverFixture = sqlserverFixture; } - ISelect select => _sqlserverFixture.SqlServer.Select(); + ISelect select => g.sqlserver.Select(); [Table(Name = "tb_topic")] class Topic diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/DateTimeTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/DateTimeTest.cs index 1f36c181..aafaf6a9 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/DateTimeTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/DateTimeTest.cs @@ -17,7 +17,7 @@ namespace FreeSql.Tests.SqlServerExpression _sqlserverFixture = sqlserverFixture; } - ISelect select => _sqlserverFixture.SqlServer.Select(); + ISelect select => g.sqlserver.Select(); [Table(Name = "tb_topic111333")] class Topic diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/MathTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/MathTest.cs index 87481aeb..1a29da32 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/MathTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/MathTest.cs @@ -17,7 +17,7 @@ namespace FreeSql.Tests.SqlServerExpression _sqlserverFixture = sqlserverFixture; } - ISelect select => _sqlserverFixture.SqlServer.Select(); + ISelect select => g.sqlserver.Select(); [Table(Name = "tb_topic")] class Topic diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs index 7a21e3a0..97562143 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs @@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression _sqlserverFixture = sqlserverFixture; } - ISelect select => _sqlserverFixture.SqlServer.Select(); + ISelect select => g.sqlserver.Select(); [Fact] public void Div() diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/StringTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/StringTest.cs index ef1a110f..c0272fa8 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/StringTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/StringTest.cs @@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression _sqlserverFixture = sqlserverFixture; } - ISelect select => _sqlserverFixture.SqlServer.Select(); + ISelect select => g.sqlserver.Select(); [Table(Name = "tb_topic")] class Topic @@ -56,7 +56,7 @@ namespace FreeSql.Tests.SqlServerExpression { var list = new List(); list.Add(select.Where(a => a.Title.Equals("aaa")).ToList()); - list.Add(_sqlserverFixture.SqlServer.Select().Where(a => a.id.Equals(Guid.Empty)).ToList()); + list.Add(g.sqlserver.Select().Where(a => a.id.Equals(Guid.Empty)).ToList()); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/TimeSpanTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/TimeSpanTest.cs index 7d5b6779..301fe9fd 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/TimeSpanTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/TimeSpanTest.cs @@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression _sqlserverFixture = sqlserverFixture; } - ISelect select => _sqlserverFixture.SqlServer.Select(); + ISelect select => g.sqlserver.Select(); [Table(Name = "tb_topic")] class Topic diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs index c5321cd3..894723ad 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs @@ -427,7 +427,7 @@ namespace FreeSql.Tests [Fact] public void Test1() { - + g.sqlserver.Select(); g.sqlite.Update(1).NoneParameter().Set(a => a.title, null).ExecuteAffrows(); diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs index c7b739ec..4a863174 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs @@ -168,6 +168,10 @@ namespace FreeSql.Tests public void Test02() { + + var dbs = g.sqlserver.DbFirst.GetDatabases(); + var tbs = g.sqlserver.DbFirst.GetTablesByDatabase("ds_shop"); + var dicParamslist = g.sqlite.Select().Page(1, 10) .Where("id > @id and id > @id2 and id > @id3", new Dictionary { ["id"] = 1, ["id2"] = 2, ["id3"] = 3 }) diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 0f30703b..dd964856 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -2000,6 +2000,137 @@ + + + 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】 + + + + + + + + + 查询,ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 }) + + + + + + + 查询 + + + + + + + 查询,ExecuteArrayAsync("select * from user where age > @age", new { age = 25 }) + + + + + + + + 查询 + + + + + + + 查询,ExecuteDataSetAsync("select * from user where age > @age; select 2", new { age = 25 }) + + + + + + + + 查询 + + + + + + + 查询,ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 }) + + + + + + + + 在【主库】执行 + + + + + + + + 在【主库】执行,ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 }) + + + + + + + + 在【主库】执行 + + + + + + + + 在【主库】执行,ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 }) + + + + + + + + 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 }) + + + + + + + + + + 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new { age = 25 }) + + + + + + + + + 执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 }) + + + + + + + + + + 执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new { age = 25 }) + + + + + + 可自定义解析表达式 @@ -2710,159 +2841,3 @@ - - - - 使用 or 拼接两个 lambda 表达式 - - - - - - 使用 or 拼接两个 lambda 表达式 - - - - true 时生效 - - - - - - 将 lambda 表达式取反 - - - - true 时生效 - - - - - 生成类似Mongodb的ObjectId有序、不重复Guid - - - - - - 插入数据 - - - - - - - 插入数据,传入实体 - - - - - - - - 插入数据,传入实体数组 - - - - - - - - 插入数据,传入实体集合 - - - - - - - - 插入数据,传入实体集合 - - - - - - - - 修改数据 - - - - - - - 修改数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} - - - 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 - - - - - 查询数据 - - - - - - - 查询数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} - - - 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 - - - - - 删除数据 - - - - - - - 删除数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} - - - 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 - - - - - 开启事务(不支持异步),60秒未执行完将自动提交 - - 事务体 () => {} - - - - 开启事务(不支持异步) - - 事务体 () => {} - 超时,未执行完将自动提交 - - - - 数据库访问对象 - - - - - 所有拦截方法都在这里 - - - - - CodeFirst 模式开发相关方法 - - - - - DbFirst 模式开发相关方法 - - - - - 全局过滤设置,可默认附加为 Select/Update/Delete 条件 - - - - diff --git a/FreeSql/Internal/CommonProvider/InsertProvider.cs b/FreeSql/Internal/CommonProvider/InsertProvider.cs index e344d149..fd4074c4 100644 --- a/FreeSql/Internal/CommonProvider/InsertProvider.cs +++ b/FreeSql/Internal/CommonProvider/InsertProvider.cs @@ -338,7 +338,7 @@ namespace FreeSql.Internal.CommonProvider } #endregion - protected int RawExecuteAffrows() + protected virtual int RawExecuteAffrows() { var sql = ToSql(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); @@ -412,7 +412,9 @@ namespace FreeSql.Internal.CommonProvider return this; } - public virtual string ToSql() + public virtual string ToSql() => ToSqlValuesOrSelectUnionAll(true); + + public string ToSqlValuesOrSelectUnionAll(bool isValues = true) { if (_source == null || _source.Any() == false) return null; var sb = new StringBuilder(); @@ -427,14 +429,15 @@ namespace FreeSql.Internal.CommonProvider sb.Append(_commonUtils.QuoteSqlName(col.Attribute.Name)); ++colidx; } - sb.Append(") VALUES"); + sb.Append(") "); + if (isValues) sb.Append(isValues ? "VALUES" : "SELECT "); _params = _noneParameter ? new DbParameter[0] : new DbParameter[colidx * _source.Count]; var specialParams = new List(); var didx = 0; foreach (var d in _source) { - if (didx > 0) sb.Append(", "); - sb.Append("("); + if (didx > 0) sb.Append(isValues ? ", " : " \r\nUNION ALL\r\n "); + sb.Append(isValues ? "(" : "SELECT "); var colidx2 = 0; foreach (var col in _table.Columns.Values) { @@ -452,7 +455,7 @@ namespace FreeSql.Internal.CommonProvider } ++colidx2; } - sb.Append(")"); + if (isValues) sb.Append(")"); ++didx; } if (_noneParameter && specialParams.Any()) diff --git a/FreeSql/Internal/CommonProvider/InsertProviderAsync.cs b/FreeSql/Internal/CommonProvider/InsertProviderAsync.cs index 018cb81a..14c5cff7 100644 --- a/FreeSql/Internal/CommonProvider/InsertProviderAsync.cs +++ b/FreeSql/Internal/CommonProvider/InsertProviderAsync.cs @@ -174,7 +174,7 @@ namespace FreeSql.Internal.CommonProvider return ret; } - async protected Task RawExecuteAffrowsAsync() + async protected virtual Task RawExecuteAffrowsAsync() { var sql = ToSql(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerInsert.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerInsert.cs index dcd41e7d..da09a6ab 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerInsert.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerInsert.cs @@ -21,9 +21,34 @@ namespace FreeSql.Odbc.SqlServer public override long ExecuteIdentity() => base.SplitExecuteIdentity(1000, 2100); public override List ExecuteInserted() => base.SplitExecuteInserted(1000, 2100); + protected override int RawExecuteAffrows() + { + var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); + var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); + _orm.Aop.CurdBefore?.Invoke(this, before); + var affrows = 0; + Exception exception = null; + try + { + affrows = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params); + } + catch (Exception ex) + { + exception = ex; + throw ex; + } + finally + { + var after = new Aop.CurdAfterEventArgs(before, exception, affrows); + _orm.Aop.CurdAfter?.Invoke(this, after); + } + return affrows; + } protected override long RawExecuteIdentity() { - var sql = this.ToSql(); + var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); if (string.IsNullOrEmpty(sql)) return 0; sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();"); @@ -47,10 +72,10 @@ namespace FreeSql.Odbc.SqlServer } return ret; } - protected override List RawExecuteInserted() { - var sql = this.ToSql(); + var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); if (string.IsNullOrEmpty(sql)) return new List(); var sb = new StringBuilder(); @@ -63,10 +88,20 @@ namespace FreeSql.Odbc.SqlServer ++colidx; } - var validx = sql.IndexOf(") VALUES"); - if (validx == -1) throw new ArgumentException("找不到 VALUES"); - sb.Insert(0, sql.Substring(0, validx + 1)); - sb.Append(sql.Substring(validx + 1)); + if (versionGreaterThan10) + { + var validx = sql.IndexOf(") VALUES"); + if (validx == -1) throw new ArgumentException("找不到 VALUES"); + sb.Insert(0, sql.Substring(0, validx + 1)); + sb.Append(sql.Substring(validx + 1)); + } + else + { + var validx = sql.IndexOf(") SELECT "); + if (validx == -1) throw new ArgumentException("找不到 SELECT"); + sb.Insert(0, sql.Substring(0, validx + 1)); + sb.Append(sql.Substring(validx + 1)); + } sql = sb.ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); @@ -95,11 +130,35 @@ namespace FreeSql.Odbc.SqlServer public override Task ExecuteAffrowsAsync() => base.SplitExecuteAffrowsAsync(1000, 2100); public override Task ExecuteIdentityAsync() => base.SplitExecuteIdentityAsync(1000, 2100); public override Task> ExecuteInsertedAsync() => base.SplitExecuteInsertedAsync(1000, 2100); - - + + async protected override Task RawExecuteAffrowsAsync() + { + var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); + var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); + _orm.Aop.CurdBefore?.Invoke(this, before); + var affrows = 0; + Exception exception = null; + try + { + affrows = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params); + } + catch (Exception ex) + { + exception = ex; + throw ex; + } + finally + { + var after = new Aop.CurdAfterEventArgs(before, exception, affrows); + _orm.Aop.CurdAfter?.Invoke(this, after); + } + return affrows; + } async protected override Task RawExecuteIdentityAsync() { - var sql = this.ToSql(); + var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); if (string.IsNullOrEmpty(sql)) return 0; sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();"); @@ -125,7 +184,8 @@ namespace FreeSql.Odbc.SqlServer } async protected override Task> RawExecuteInsertedAsync() { - var sql = this.ToSql(); + var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); if (string.IsNullOrEmpty(sql)) return new List(); var sb = new StringBuilder(); @@ -138,10 +198,20 @@ namespace FreeSql.Odbc.SqlServer ++colidx; } - var validx = sql.IndexOf(") VALUES"); - if (validx == -1) throw new ArgumentException("找不到 VALUES"); - sb.Insert(0, sql.Substring(0, validx + 1)); - sb.Append(sql.Substring(validx + 1)); + if (versionGreaterThan10) + { + var validx = sql.IndexOf(") VALUES"); + if (validx == -1) throw new ArgumentException("找不到 VALUES"); + sb.Insert(0, sql.Substring(0, validx + 1)); + sb.Append(sql.Substring(validx + 1)); + } + else + { + var validx = sql.IndexOf(") SELECT "); + if (validx == -1) throw new ArgumentException("找不到 SELECT"); + sb.Insert(0, sql.Substring(0, validx + 1)); + sb.Append(sql.Substring(validx + 1)); + } sql = sb.ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs index d8cd5f74..6403f544 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs @@ -106,27 +106,29 @@ ELSE protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects) { var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5)); - var database = conn.Value.Database; - Func ExecuteScalar = (db, sql) => - { - if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(db); - try - { - using (var cmd = conn.Value.CreateCommand()) - { - cmd.CommandText = sql; - cmd.CommandType = CommandType.Text; - return cmd.ExecuteScalar(); - } - } - finally - { - if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(database); - } - }; - var sb = new StringBuilder(); + string database = null; try { + database = conn.Value.Database; + Func ExecuteScalar = (db, sql) => + { + if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(db); + try + { + using (var cmd = conn.Value.CreateCommand()) + { + cmd.CommandText = sql; + cmd.CommandType = CommandType.Text; + return cmd.ExecuteScalar(); + } + } + finally + { + if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(database); + } + }; + var sb = new StringBuilder(); + foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); @@ -243,10 +245,9 @@ a.name 'Column' else '' end as 'SqlType' ,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable' ,case when a.is_identity = 1 then '1' else '0' end 'IsIdentity' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment' from sys.columns a inner join sys.types b on b.user_type_id = a.user_type_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id left join sys.tables d on d.object_id = a.object_id left join sys.schemas e on e.schema_id = d.schema_id where a.object_id in (object_id(N'[{1}].[{2}]')); @@ -377,7 +378,8 @@ use " + database, tboldname ?? tbname); if (string.IsNullOrEmpty(tbcol.Comment) == false) AddOrUpdateMS_Description(sb, tbname[1], $"FreeSqlTmp_{tbname[2]}", tbcol.Attribute.Name, tbcol.Comment); } - sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n"); + if ((_commonUtils as OdbcSqlServerUtils).ServerVersion > 9) //SqlServer 2008+ + sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n"); if (idents) sb.Append("SET IDENTITY_INSERT ").Append(tmptablename).Append(" ON;\r\n"); sb.Append("IF EXISTS(SELECT 1 FROM ").Append(tablename).Append(")\r\n"); sb.Append("\tEXEC('INSERT INTO ").Append(tmptablename).Append(" ("); @@ -426,7 +428,8 @@ use " + database, tboldname ?? tbname); { try { - conn.Value.ChangeDatabase(database); + if (string.IsNullOrEmpty(database) == false) + conn.Value.ChangeDatabase(database); _orm.Ado.MasterPool.Return(conn); } catch diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerDbFirst.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerDbFirst.cs index b24afe4a..bf94f966 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerDbFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerDbFirst.cs @@ -130,32 +130,29 @@ select a.Object_id ,b.name 'Owner' ,a.name 'Name' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment' ,'TABLE' type from sys.tables a inner join sys.schemas b on b.schema_id = a.schema_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description' where not(b.name = 'dbo' and a.name = 'sysdiagrams') union all select a.Object_id ,b.name 'Owner' ,a.name 'Name' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment' ,'VIEW' type from sys.views a inner join sys.schemas b on b.schema_id = a.schema_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description' union all select a.Object_id ,b.name 'Owner' ,a.name 'Name' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment' ,'StoreProcedure' type from sys.procedures a inner join sys.schemas b on b.schema_id = a.schema_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description' where a.type = 'P' and charindex('diagram', a.name) = 0 order by type desc, b.name, a.name ; @@ -241,10 +238,9 @@ isnull(e.name,'') + '.' + isnull(d.name,'') else cast(a.max_length as varchar) end + ')' when b.name in ('Numeric', 'Decimal') then '(' + cast(a.precision as varchar) + ',' + cast(a.scale as varchar) + ')' else '' end as 'SqlType' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment' {0} a inner join sys.types b on b.user_type_id = a.user_type_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id left join sys.tables d on d.object_id = a.object_id left join sys.schemas e on e.schema_id = d.schema_id where {1} @@ -257,8 +253,8 @@ from sys.columns", loc8.ToString().Replace("a.table_name", "a.object_id")); { sql += "union all" + string.Format(tsql_place.Replace( - "left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id", - "left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.parameter_id"), @" + "select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id", + "select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.parameter_id"), @" ,cast(0 as bit) 'IsNullable' ,a.is_output 'IsIdentity' from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id")); diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerProvider.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerProvider.cs index 8af1881a..58c63d56 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerProvider.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerProvider.cs @@ -42,7 +42,7 @@ namespace FreeSql.Odbc.SqlServer { try { - (this.InternalCommonUtils as OdbcSqlServerUtils).IsSelectRowNumber = int.Parse(conn.Value.ServerVersion.Split('.')[0]) <= 10; + (this.InternalCommonUtils as OdbcSqlServerUtils).ServerVersion = int.Parse(conn.Value.ServerVersion.Split('.')[0]); } catch { diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs index 7466fe40..844b735f 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs @@ -17,7 +17,9 @@ namespace FreeSql.Odbc.SqlServer { } - public bool IsSelectRowNumber = true; + public bool IsSelectRowNumber => ServerVersion <= 10; + public bool IsSqlServer2005 => ServerVersion == 9; + public int ServerVersion = 0; public override DbParameter AppendParamter(List _params, string parameterName, Type type, object value) { diff --git a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerInsert.cs b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerInsert.cs index 4c543635..73f2f92f 100644 --- a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerInsert.cs +++ b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerInsert.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Data.Common; +using System.Linq; using System.Text; using System.Threading.Tasks; @@ -21,9 +22,34 @@ namespace FreeSql.SqlServer.Curd public override long ExecuteIdentity() => base.SplitExecuteIdentity(1000, 2100); public override List ExecuteInserted() => base.SplitExecuteInserted(1000, 2100); + protected override int RawExecuteAffrows() + { + var versionGreaterThan10 = (_commonUtils as SqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); + var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); + _orm.Aop.CurdBefore?.Invoke(this, before); + var affrows = 0; + Exception exception = null; + try + { + affrows = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params); + } + catch (Exception ex) + { + exception = ex; + throw ex; + } + finally + { + var after = new Aop.CurdAfterEventArgs(before, exception, affrows); + _orm.Aop.CurdAfter?.Invoke(this, after); + } + return affrows; + } protected override long RawExecuteIdentity() { - var sql = this.ToSql(); + var versionGreaterThan10 = (_commonUtils as SqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); if (string.IsNullOrEmpty(sql)) return 0; sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();"); @@ -49,7 +75,8 @@ namespace FreeSql.SqlServer.Curd } protected override List RawExecuteInserted() { - var sql = this.ToSql(); + var versionGreaterThan10 = (_commonUtils as SqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql(): this.ToSqlValuesOrSelectUnionAll(false); if (string.IsNullOrEmpty(sql)) return new List(); var sb = new StringBuilder(); @@ -62,10 +89,20 @@ namespace FreeSql.SqlServer.Curd ++colidx; } - var validx = sql.IndexOf(") VALUES"); - if (validx == -1) throw new ArgumentException("找不到 VALUES"); - sb.Insert(0, sql.Substring(0, validx + 1)); - sb.Append(sql.Substring(validx + 1)); + if (versionGreaterThan10) + { + var validx = sql.IndexOf(") VALUES"); + if (validx == -1) throw new ArgumentException("找不到 VALUES"); + sb.Insert(0, sql.Substring(0, validx + 1)); + sb.Append(sql.Substring(validx + 1)); + } + else + { + var validx = sql.IndexOf(") SELECT "); + if (validx == -1) throw new ArgumentException("找不到 SELECT"); + sb.Insert(0, sql.Substring(0, validx + 1)); + sb.Append(sql.Substring(validx + 1)); + } sql = sb.ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); @@ -95,9 +132,34 @@ namespace FreeSql.SqlServer.Curd public override Task ExecuteIdentityAsync() => base.SplitExecuteIdentityAsync(1000, 2100); public override Task> ExecuteInsertedAsync() => base.SplitExecuteInsertedAsync(1000, 2100); + async protected override Task RawExecuteAffrowsAsync() + { + var versionGreaterThan10 = (_commonUtils as SqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); + var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); + _orm.Aop.CurdBefore?.Invoke(this, before); + var affrows = 0; + Exception exception = null; + try + { + affrows = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params); + } + catch (Exception ex) + { + exception = ex; + throw ex; + } + finally + { + var after = new Aop.CurdAfterEventArgs(before, exception, affrows); + _orm.Aop.CurdAfter?.Invoke(this, after); + } + return affrows; + } async protected override Task RawExecuteIdentityAsync() { - var sql = this.ToSql(); + var versionGreaterThan10 = (_commonUtils as SqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); if (string.IsNullOrEmpty(sql)) return 0; sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();"); @@ -123,7 +185,8 @@ namespace FreeSql.SqlServer.Curd } async protected override Task> RawExecuteInsertedAsync() { - var sql = this.ToSql(); + var versionGreaterThan10 = (_commonUtils as SqlServerUtils).ServerVersion > 10; + var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false); if (string.IsNullOrEmpty(sql)) return new List(); var sb = new StringBuilder(); @@ -136,10 +199,20 @@ namespace FreeSql.SqlServer.Curd ++colidx; } - var validx = sql.IndexOf(") VALUES"); - if (validx == -1) throw new ArgumentException("找不到 VALUES"); - sb.Insert(0, sql.Substring(0, validx + 1)); - sb.Append(sql.Substring(validx + 1)); + if (versionGreaterThan10) + { + var validx = sql.IndexOf(") VALUES"); + if (validx == -1) throw new ArgumentException("找不到 VALUES"); + sb.Insert(0, sql.Substring(0, validx + 1)); + sb.Append(sql.Substring(validx + 1)); + } + else + { + var validx = sql.IndexOf(") SELECT "); + if (validx == -1) throw new ArgumentException("找不到 SELECT"); + sb.Insert(0, sql.Substring(0, validx + 1)); + sb.Append(sql.Substring(validx + 1)); + } sql = sb.ToString(); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs index bcc14338..44747d23 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs @@ -109,27 +109,29 @@ ELSE protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects) { var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5)); - var database = conn.Value.Database; - Func ExecuteScalar = (db, sql) => - { - if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(db); - try - { - using (var cmd = conn.Value.CreateCommand()) - { - cmd.CommandText = sql; - cmd.CommandType = CommandType.Text; - return cmd.ExecuteScalar(); - } - } - finally - { - if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(database); - } - }; - var sb = new StringBuilder(); + string database = null; try { + database = conn.Value.Database; + Func ExecuteScalar = (db, sql) => + { + if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(db); + try + { + using (var cmd = conn.Value.CreateCommand()) + { + cmd.CommandText = sql; + cmd.CommandType = CommandType.Text; + return cmd.ExecuteScalar(); + } + } + finally + { + if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(database); + } + }; + var sb = new StringBuilder(); + foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); @@ -246,10 +248,9 @@ a.name 'Column' else '' end as 'SqlType' ,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable' ,case when a.is_identity = 1 then '1' else '0' end 'IsIdentity' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment' from sys.columns a inner join sys.types b on b.user_type_id = a.user_type_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id left join sys.tables d on d.object_id = a.object_id left join sys.schemas e on e.schema_id = d.schema_id where a.object_id in (object_id(N'[{1}].[{2}]')); @@ -380,7 +381,8 @@ use " + database, tboldname ?? tbname); if (string.IsNullOrEmpty(tbcol.Comment) == false) AddOrUpdateMS_Description(sb, tbname[1], $"FreeSqlTmp_{tbname[2]}", tbcol.Attribute.Name, tbcol.Comment); } - sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n"); + if ((_commonUtils as SqlServerUtils).ServerVersion > 9) //SqlServer 2008+ + sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n"); if (idents) sb.Append("SET IDENTITY_INSERT ").Append(tmptablename).Append(" ON;\r\n"); sb.Append("IF EXISTS(SELECT 1 FROM ").Append(tablename).Append(")\r\n"); sb.Append("\tEXEC('INSERT INTO ").Append(tmptablename).Append(" ("); @@ -429,7 +431,8 @@ use " + database, tboldname ?? tbname); { try { - conn.Value.ChangeDatabase(database); + if (string.IsNullOrEmpty(database) == false) + conn.Value.ChangeDatabase(database); _orm.Ado.MasterPool.Return(conn); } catch diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs index 0a53e4f9..2be0a2e9 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs @@ -133,32 +133,29 @@ select a.Object_id ,b.name 'Owner' ,a.name 'Name' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment' ,'TABLE' type from sys.tables a inner join sys.schemas b on b.schema_id = a.schema_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description' where not(b.name = 'dbo' and a.name = 'sysdiagrams') union all select a.Object_id ,b.name 'Owner' ,a.name 'Name' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment' ,'VIEW' type from sys.views a inner join sys.schemas b on b.schema_id = a.schema_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description' union all select a.Object_id ,b.name 'Owner' ,a.name 'Name' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment' ,'StoreProcedure' type from sys.procedures a inner join sys.schemas b on b.schema_id = a.schema_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description' where a.type = 'P' and charindex('diagram', a.name) = 0 order by type desc, b.name, a.name ; @@ -244,10 +241,9 @@ isnull(e.name,'') + '.' + isnull(d.name,'') else cast(a.max_length as varchar) end + ')' when b.name in ('Numeric', 'Decimal') then '(' + cast(a.precision as varchar) + ',' + cast(a.scale as varchar) + ')' else '' end as 'SqlType' -,c.value +,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment' {0} a inner join sys.types b on b.user_type_id = a.user_type_id -left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id left join sys.tables d on d.object_id = a.object_id left join sys.schemas e on e.schema_id = d.schema_id where {1} @@ -260,8 +256,8 @@ from sys.columns", loc8.ToString().Replace("a.table_name", "a.object_id")); { sql += "union all" + string.Format(tsql_place.Replace( - "left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id", - "left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.parameter_id"), @" + "select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id", + "select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.parameter_id"), @" ,cast(0 as bit) 'IsNullable' ,a.is_output 'IsIdentity' from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id")); diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerProvider.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerProvider.cs index d5d87938..3efeae05 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerProvider.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerProvider.cs @@ -43,7 +43,7 @@ namespace FreeSql.SqlServer { try { - (this.InternalCommonUtils as SqlServerUtils).IsSelectRowNumber = int.Parse(conn.Value.ServerVersion.Split('.')[0]) <= 10; + (this.InternalCommonUtils as SqlServerUtils).ServerVersion = int.Parse(conn.Value.ServerVersion.Split('.')[0]); } catch { diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs index 0c94f33e..e8b51ee5 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs @@ -17,7 +17,9 @@ namespace FreeSql.SqlServer { } - public bool IsSelectRowNumber = true; + public bool IsSelectRowNumber => ServerVersion <= 10; + public bool IsSqlServer2005 => ServerVersion == 9; + public int ServerVersion = 0; public override DbParameter AppendParamter(List _params, string parameterName, Type type, object value) {