From d6010b4b51150e47b352feb298db4b1d0c207978 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Tue, 19 Nov 2019 00:38:34 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20SqlServer=20DbFirst?= =?UTF-8?q?=E3=80=81CodeFirst=20=E6=9F=A5=E8=AF=A2=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=E8=A1=A8=E7=9A=84=E5=88=97=E4=BF=A1=E6=81=AF=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=8C=E5=BD=93=E8=AE=BE=E7=BD=AE=E4=BA=86=E8=A1=A8/?= =?UTF-8?q?=E5=88=97=E5=A4=9A=E4=B8=AA=E6=89=A9=E5=B1=95=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E6=97=B6=E5=8F=91=E7=94=9F=EF=BC=9B=20-=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20SqlServer2005=20CodeFirst=20=E8=BF=81=E7=A7=BB=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E6=94=AF=E6=8C=81=20SET=20(LOCK=5FESCALATION?= =?UTF-8?q?=20TABLE)=20=E7=9A=84=E9=94=99=E8=AF=AF=EF=BC=88=E5=B7=B2?= =?UTF-8?q?=E5=81=9A=E9=80=82=E9=85=8D=EF=BC=89=EF=BC=9B=20-=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20SqlServer2005=20=E6=89=B9=E9=87=8F=E6=8F=92?= =?UTF-8?q?=E5=85=A5SQL=E8=AF=AD=E6=B3=95=E9=94=99=E8=AF=AF=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E6=94=AF=E6=8C=81=20Values(),()=EF=BC=88=E5=B7=B2?= =?UTF-8?q?=E5=81=9A=E9=80=82=E9=85=8D=EF=BC=89=EF=BC=9B=20-=20=E5=AE=8C?= =?UTF-8?q?=E5=96=84=20SqlServer2005=20=E7=8E=AF=E5=A2=83=E8=B7=91?= =?UTF-8?q?=E9=80=9A=E4=BA=86=E6=89=80=E6=9C=89=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseEntity 纯净版源码.zip | Bin 0 -> 4088 bytes .../DataAnnotations/SqlServerFluentTest.cs | 26 +- .../SqlServer/Curd/SqlServerDeleteTest.cs | 28 +- .../SqlServer/Curd/SqlServerInsertTest.cs | 32 +- .../SqlServer/Curd/SqlServerSelectTest.cs | 124 ++++---- .../SqlServer/Curd/SqlServerUpdateTest.cs | 38 +-- .../SqlServer/MapType/BoolNullableTest.cs | 36 +-- .../SqlServer/MapType/BoolTest.cs | 36 +-- .../SqlServer/MapType/EnumTest.cs | 8 +- .../SqlServer/MapType/ToStringTest.cs | 20 +- .../SqlServerAdo/SqlServerAdoTest.cs | 30 +- .../SqlServer/SqlServerCodeFirstTest.cs | 33 +- .../SqlServer/SqlServerDbFirstTest.cs | 4 +- .../SqlServerExpression/ConvertTest.cs | 2 +- .../SqlServerExpression/DateTimeTest.cs | 2 +- .../SqlServer/SqlServerExpression/MathTest.cs | 2 +- .../SqlServerExpression/OtherTest.cs | 2 +- .../SqlServerExpression/StringTest.cs | 4 +- .../SqlServerExpression/TimeSpanTest.cs | 2 +- FreeSql.Tests/FreeSql.Tests/UnitTest1.cs | 2 +- FreeSql.Tests/FreeSql.Tests/UnitTest2.cs | 4 + FreeSql/FreeSql.xml | 287 ++++++++---------- .../Internal/CommonProvider/InsertProvider.cs | 15 +- .../CommonProvider/InsertProviderAsync.cs | 2 +- .../SqlServer/Curd/OdbcSqlServerInsert.cs | 100 +++++- .../SqlServer/OdbcSqlServerCodeFirst.cs | 49 +-- .../SqlServer/OdbcSqlServerDbFirst.cs | 16 +- .../SqlServer/OdbcSqlServerProvider.cs | 2 +- .../SqlServer/OdbcSqlServerUtils.cs | 4 +- .../Curd/SqlServerInsert.cs | 97 +++++- .../SqlServerCodeFirst.cs | 49 +-- .../SqlServerDbFirst.cs | 16 +- .../SqlServerProvider.cs | 2 +- .../SqlServerUtils.cs | 4 +- 34 files changed, 598 insertions(+), 480 deletions(-) create mode 100644 Extensions/FreeSql.Extensions.BaseEntity/BaseEntity 纯净版源码.zip diff --git a/Extensions/FreeSql.Extensions.BaseEntity/BaseEntity 纯净版源码.zip b/Extensions/FreeSql.Extensions.BaseEntity/BaseEntity 纯净版源码.zip new file mode 100644 index 0000000000000000000000000000000000000000..ab1fb53d6f3f718fcb89c9e829b10dcad851ac12 GIT binary patch literal 4088 zcmZ{nXH*l)w#UPvC}1EIk*Czz-1p-L#1OzFe z3DTq}y(pn5NDBmy)I7cGp8LG-tT(gP>^1wt{;!!2zy04P2Glg{007`T0NmhZoHkqC zZbkzDyk-FafIqWZ4&KhX?&y2yrxH%y6Xpi7Y?`2U$;}`)RYMJ7-vbs)wzND>X&5sR z_oOIA&dAU4iLqQsUj7fO%Rek&n!0475ICm#faEmKHI)+7xsd~PNrp~VAa#!u*Y$i3 z?wHw|t$yjcV{BrsJ*OzJ+WkIay|lf-vV(O*YE56fbWmrfb)F+xjxOCwxk1nKd9xPW z-~#_v;bu+qfm;fjK!lrun2%8nkVlAlh=C*WW81n&1donft?rxY;^KHiV*$#e&UYNtTe8>lbA|Z}JDo;fTt{zmh`~1n(fyK9JJcw^Pl*Dybmd*Zkb_0NQ?bNLRLb<>BZa z3rx5^p7A^F>rZDVa(D1T3kC@}H+LiIDZC?+q|mCupA#N?A#wxx6bEd#$7d4}hUu6j$QqWtQa8bCQ0 zlbs9%2RpU$ZdfFO271qrTWy8$TIH&REeQGikyUW*o!gBiYEk?cC??xnD`)xWr)YOXhDPv%7MH zfXSK_Dzyhxm!ly3G+LWu};1^T~hz-v6$CMorL{E553%ed`XGOy3uNoGGD7N z(LQ&-dbsl{%7%LDo)-|gcMC`0aa*g#UmJQ;6(+c|xrV2ekR{tOs_?Hb-+t4oy`b<{ zVv*>536FC4`#fnK>^N>BO%+pq&QuJBh?Xa>lBNDKwXA+LMAL|%y7^s3)L`ONLLIqw z>pd@of5iX&;F^g{Tu0AXc<2|(pCMmeL@+L+{^v!w);ggc05y6wNNt9Yb-4u=1(XdgIwkrKxr9Y z=v^~DJJzEQ3{;C7-EpcP=iQ;Jj>Lv)dC3W$|)D^4F&$fZaXB;A9C7&TY`xTaNW_ z;vDhpjOTB^f@_*~eM3wARlaWih=lfC63L=7OU}S+i?*~prqoN^?-59zwvW%v$eFR# z?u<-Xs@GfUYS~={PFq`H*lm;&Hg4j{k4bX}cB3tAQXG% zvF(tjPg#CZ1@q-<0q=7p%|U;i%nC&b9j-;p>1p@dH+;te z8=j@}y2#E{vaQD?j-#ty%L@fXDp{Pz(=z7U&WL~BLu^jXf?3S)f#CpNzWZ!7ERvd1 zi|39&rOsxhP$*m zie+ke_VvP&`P-S50vxmkTN6pQLplJ?KR`vSH$#x(_cqNsst!Mc8}#!!q5vR~VO%A< zNXLwtK8C8*J)PBhYyJkG1rk&9gCxgQ6lW=|m!XYUR3aW}+sM7slHHw@%UGs}vWR@` zxtr-@TO32w*&?F(>xu`fyRDmwrRMB*FA-Ty0O`Bd(^%7J|$30t=?f<|FjV@%tOFC)p>QW zfZgNPpW@6!kA^0HNDuf9RVB3>(;`>QEF>U!FW&1sK5n3|rb|&FiMjjfdQ0l#L5qru zFWM+ulil|DrM#55l@F>}$z(Ghl$e9~Mi|iP>E#?>kZNn8Q*hNOqr(u0DveVtp5rkM zjm-AG=NGf4U5q1(&O)m`uSRrqK~P0nLlQoX;n>BY>KGly&FK+NG9tXnOr zu_-)N*w9DT#rI<)Uqt58w48$Cm9MXqoqP0K>E>@epi^^GN#)`;Om5`*Ua0)IaE(>} z7;Q`@5bfByg-%A1A0Qd-kDqoJGx)jJT240D55+ie60DJ2tr6&iU>hi_y8lEX592oQ8# z5-M3!6wdF3CEMSC+Suh;n5Vud1a!rNcWPCF= z(|eiqrr-PEc_C3_QF25mlSv?d7bT)y$L5p3=&N;4$O|B06<-*zt!5n~&q_j6vdE?&^T6Gl zI}kH`I;5xq9SL+bYq{C+UPCt&#`|KwSO+@y$07^gTtxwl;hIBsfrEEAod|G3*+Pts zXRe|oOxVuP?{Foq9c6p?)xK>aqkY0}zd?!8n@eDFZa*Y?Ivo|@B)3Q1SDv}klrFPo zH;iP&>}z(JsNG9?!;{Sqy`uL)i7G@Sa3?~p_0$UuGB1kzBk5tpaFq3u5ESOd#N#jQ zTQ9`rIOVx1&14*JofFHI`j9+LPm*OK$-+5yXz>!abtB7Z%B&#N@R|S-^PBwY9>Z!6 z<}q_kCoZ0Y=~?a99JMaRzL!`GV$o%(#PU1K0eixsFGmH$Hu%HLaE){94>a|nS?z$! zmOXQRK4K2b?j{z*lZz<0pt1u|Mij!a_)MmjZ(y@Y#bv_6)@X&EeOZ;&Q3JAb(JF6y zX?rfbG{Q&FDd*B|>^&9Li#J7?4v`YyRdOFez_&Ej`3KAX#F4U{dwe*-*Wb8pUmI7d znYS&Xh*pV&bVUv8ot9}jl@$F*+m{IAzA$V0f{r&y+wUYP+<*Opc1A37t_0?A*J+!T zIbKS%hJl;WZIyv`l1IUX2Wxax?_If$bsS>lNwL1mRHyHe##$?jwW(jj=tEcSqg`9jbYc`ag0pPt_a9cvAN@d zKZ|#cn#QaqUx?+JbC#T4DpU(Ua$IEeb(~TUxAjIXd~Se>KC&(GJl5XtUG5!T2OU#- zoZrR_1%xU0@o5p3bwF&;&%BxH#~kf8e;E%W&(gP3%LF}2RiMK-I`4Ul`sb5GTUGDd zK?MI^!miGVE!7xNJ>%Yd(5I#YbF%fWpndBRT>R+HPRBX1lQz;RIZi!5qWh2S9Q|9j&dD;2jPobsz^$pZNw(() => _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) {