- 修复 SqlServer DbFirst、CodeFirst 查询实体表的列信息错误,当设置了表/列多个扩展属性时发生;

- 修复 SqlServer2005 CodeFirst 迁移时,不支持 SET (LOCK_ESCALATION TABLE) 的错误(已做适配);
- 修复 SqlServer2005 批量插入SQL语法错误,不支持 Values(),()(已做适配);
- 完善 SqlServer2005 环境跑通了所有单元测试;
This commit is contained in:
28810 2019-11-19 00:38:34 +08:00
parent acd406164a
commit d6010b4b51
34 changed files with 598 additions and 480 deletions

View File

@ -20,9 +20,9 @@ namespace FreeSql.Tests.DataAnnotations
[Fact] [Fact]
public void DisableSyncStructure() public void DisableSyncStructure()
{ {
Assert.Throws<SqlException>(() => _sqlserverFixture.SqlServer.Select<ModelDisableSyncStructure>().ToList()); Assert.Throws<SqlException>(() => g.sqlserver.Select<ModelDisableSyncStructure>().ToList());
_sqlserverFixture.SqlServer.Select<ModelSyncStructure>().ToList(); g.sqlserver.Select<ModelSyncStructure>().ToList();
} }
[Table(DisableSyncStructure = true)] [Table(DisableSyncStructure = true)]
class ModelDisableSyncStructure class ModelDisableSyncStructure
@ -39,7 +39,7 @@ namespace FreeSql.Tests.DataAnnotations
[Fact] [Fact]
public void Fluent() public void Fluent()
{ {
_sqlserverFixture.SqlServer.CodeFirst g.sqlserver.CodeFirst
//.ConfigEntity<TestFluenttb1>(a => { //.ConfigEntity<TestFluenttb1>(a => {
// a.Name("xxdkdkdk1"); // a.Name("xxdkdkdk1");
// a.Property(b => b.Id).Name("Id22").IsIdentity(true); // a.Property(b => b.Id).Name("Id22").IsIdentity(true);
@ -61,21 +61,21 @@ namespace FreeSql.Tests.DataAnnotations
}) })
; ;
var ddl1 = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<TestFluenttb1>(); var ddl1 = g.sqlserver.CodeFirst.GetComparisonDDLStatements<TestFluenttb1>();
var ddl2 = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<TestFluenttb2>(); var ddl2 = g.sqlserver.CodeFirst.GetComparisonDDLStatements<TestFluenttb2>();
var t1id = _sqlserverFixture.SqlServer.Insert<TestFluenttb1>().AppendData(new TestFluenttb1 { }).ExecuteIdentity(); var t1id = g.sqlserver.Insert<TestFluenttb1>().AppendData(new TestFluenttb1 { }).ExecuteIdentity();
var t1 = _sqlserverFixture.SqlServer.Select<TestFluenttb1>(t1id).ToOne(); var t1 = g.sqlserver.Select<TestFluenttb1>(t1id).ToOne();
var t2lastId = _sqlserverFixture.SqlServer.Select<TestFluenttb2>().Max(a => a.Id); var t2lastId = g.sqlserver.Select<TestFluenttb2>().Max(a => a.Id);
var t2affrows = _sqlserverFixture.SqlServer.Insert<TestFluenttb2>().AppendData(new TestFluenttb2 { Id = t2lastId + 1 }).ExecuteAffrows(); var t2affrows = g.sqlserver.Insert<TestFluenttb2>().AppendData(new TestFluenttb2 { Id = t2lastId + 1 }).ExecuteAffrows();
var t2 = _sqlserverFixture.SqlServer.Select<TestFluenttb2>(t2lastId + 1).ToOne(); var t2 = g.sqlserver.Select<TestFluenttb2>(t2lastId + 1).ToOne();
} }
[Fact] [Fact]
public void GroupPrimaryKey() public void GroupPrimaryKey()
{ {
_sqlserverFixture.SqlServer.CodeFirst.SyncStructure<TestgroupkeyTb>(); g.sqlserver.CodeFirst.SyncStructure<TestgroupkeyTb>();
g.mysql.CodeFirst.SyncStructure<TestgroupkeyTb>(); g.mysql.CodeFirst.SyncStructure<TestgroupkeyTb>();
g.pgsql.CodeFirst.SyncStructure<TestgroupkeyTb>(); g.pgsql.CodeFirst.SyncStructure<TestgroupkeyTb>();
g.sqlite.CodeFirst.SyncStructure<TestgroupkeyTb>(); g.sqlite.CodeFirst.SyncStructure<TestgroupkeyTb>();
@ -114,9 +114,9 @@ namespace FreeSql.Tests.DataAnnotations
public void IsIgnore() public void IsIgnore()
{ {
var item = new TestIsIgnore { }; var item = new TestIsIgnore { };
Assert.Equal(1, _sqlserverFixture.SqlServer.Insert<TestIsIgnore>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, g.sqlserver.Insert<TestIsIgnore>().AppendData(item).ExecuteAffrows());
var find = _sqlserverFixture.SqlServer.Select<TestIsIgnore>().Where(a => a.id == item.id).First(); var find = g.sqlserver.Select<TestIsIgnore>().Where(a => a.id == item.id).First();
Assert.NotNull(find); Assert.NotNull(find);
Assert.Equal(item.id, find.id); Assert.Equal(item.id, find.id);
} }

View File

@ -17,7 +17,7 @@ namespace FreeSql.Tests.SqlServer
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
IDelete<Topic> delete => _sqlserverFixture.SqlServer.Delete<Topic>(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IDelete<Topic> delete => g.sqlserver.Delete<Topic>(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
[Table(Name = "tb_topic22211")] [Table(Name = "tb_topic22211")]
class Topic class Topic
@ -33,17 +33,17 @@ namespace FreeSql.Tests.SqlServer
[Fact] [Fact]
public void Dywhere() public void Dywhere()
{ {
Assert.Null(_sqlserverFixture.SqlServer.Delete<Topic>().ToSql()); Assert.Null(g.sqlserver.Delete<Topic>().ToSql());
var sql = _sqlserverFixture.SqlServer.Delete<Topic>(new[] { 1, 2 }).ToSql(); var sql = g.sqlserver.Delete<Topic>(new[] { 1, 2 }).ToSql();
Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1 OR [Id] = 2)", sql); Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1 OR [Id] = 2)", sql);
sql = _sqlserverFixture.SqlServer.Delete<Topic>(new Topic { Id = 1, Title = "test" }).ToSql(); sql = g.sqlserver.Delete<Topic>(new Topic { Id = 1, Title = "test" }).ToSql();
Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1)", sql); Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1)", sql);
sql = _sqlserverFixture.SqlServer.Delete<Topic>(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).ToSql(); sql = g.sqlserver.Delete<Topic>(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); Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1 OR [Id] = 2)", sql);
sql = _sqlserverFixture.SqlServer.Delete<Topic>(new { id = 1 }).ToSql(); sql = g.sqlserver.Delete<Topic>(new { id = 1 }).ToSql();
Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1)", sql); Assert.Equal("DELETE FROM [tb_topic22211] WHERE ([Id] = 1)", sql);
} }
@ -70,18 +70,18 @@ namespace FreeSql.Tests.SqlServer
public void ExecuteAffrows() public void ExecuteAffrows()
{ {
var id = _sqlserverFixture.SqlServer.Insert<Topic>(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteIdentity(); var id = g.sqlserver.Insert<Topic>(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteIdentity();
Assert.Equal(1, delete.Where(a => a.Id == id).ExecuteAffrows()); Assert.Equal(1, delete.Where(a => a.Id == id).ExecuteAffrows());
} }
[Fact] [Fact]
public void ExecuteDeleted() public void ExecuteDeleted()
{ {
var item = _sqlserverFixture.SqlServer.Insert<Topic>(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteInserted(); var item = g.sqlserver.Insert<Topic>(new Topic { Title = "xxxx", CreateTime = DateTime.Now }).ExecuteInserted();
Assert.Equal(item[0].Id, delete.Where(a => a.Id == item[0].Id).ExecuteDeleted()[0].Id); 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 items = Enumerable.Range(0, 301).Select(a => new Topic { Title = "xxxx" + a, CreateTime = DateTime.Now }).ToArray();
var itemsInserted = _sqlserverFixture.SqlServer.Insert<Topic>(items).ExecuteInserted(); var itemsInserted = g.sqlserver.Insert<Topic>(items).ExecuteInserted();
Assert.Equal(items.First().Title, itemsInserted[0].Title); Assert.Equal(items.First().Title, itemsInserted[0].Title);
Assert.Equal(itemsInserted[0].Id, delete.Where(a => a.Id == itemsInserted[0].Id).ExecuteDeleted()[0].Id); 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] [Fact]
public void AsTable() public void AsTable()
{ {
Assert.Null(_sqlserverFixture.SqlServer.Delete<Topic>().ToSql()); Assert.Null(g.sqlserver.Delete<Topic>().ToSql());
var sql = _sqlserverFixture.SqlServer.Delete<Topic>(new[] { 1, 2 }).AsTable(a => "tb_topic22211AsTable").ToSql(); var sql = g.sqlserver.Delete<Topic>(new[] { 1, 2 }).AsTable(a => "tb_topic22211AsTable").ToSql();
Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1 OR [Id] = 2)", sql); Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1 OR [Id] = 2)", sql);
sql = _sqlserverFixture.SqlServer.Delete<Topic>(new Topic { Id = 1, Title = "test" }).AsTable(a => "tb_topic22211AsTable").ToSql(); sql = g.sqlserver.Delete<Topic>(new Topic { Id = 1, Title = "test" }).AsTable(a => "tb_topic22211AsTable").ToSql();
Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1)", sql); Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1)", sql);
sql = _sqlserverFixture.SqlServer.Delete<Topic>(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).AsTable(a => "tb_topic22211AsTable").ToSql(); sql = g.sqlserver.Delete<Topic>(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); Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1 OR [Id] = 2)", sql);
sql = _sqlserverFixture.SqlServer.Delete<Topic>(new { id = 1 }).AsTable(a => "tb_topic22211AsTable").ToSql(); sql = g.sqlserver.Delete<Topic>(new { id = 1 }).AsTable(a => "tb_topic22211AsTable").ToSql();
Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1)", sql); Assert.Equal("DELETE FROM [tb_topic22211AsTable] WHERE ([Id] = 1)", sql);
} }
} }

View File

@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServer
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
IInsert<Topic> insert => _sqlserverFixture.SqlServer.Insert<Topic>(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IInsert<Topic> insert => g.sqlserver.Insert<Topic>(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
[Table(Name = "tb_topic")] [Table(Name = "tb_topic")]
class 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(); 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); 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<TopicIgnore>().Where("1=1").ExecuteAffrows(); g.sqlserver.Delete<TopicIgnore>().Where("1=1").ExecuteAffrows();
var itemsIgnore = new List<TopicIgnore>(); var itemsIgnore = new List<TopicIgnore>();
for (var a = 0; a < 2072; a++) itemsIgnore.Add(new TopicIgnore { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100, CreateTime = DateTime.Now }); 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<TopicIgnore>().AppendData(itemsIgnore).IgnoreColumns(a => new { a.Title }).ExecuteAffrows(); g.sqlserver.Insert<TopicIgnore>().AppendData(itemsIgnore).IgnoreColumns(a => new { a.Title }).ExecuteAffrows();
Assert.Equal(2072, itemsIgnore.Count); Assert.Equal(2072, itemsIgnore.Count);
Assert.Equal(2072, _sqlserverFixture.SqlServer.Select<TopicIgnore>().Where(a => a.Title == null).Count()); Assert.Equal(2072, g.sqlserver.Select<TopicIgnore>().Where(a => a.Title == null).Count());
} }
[Table(Name = "tb_topicIgnoreColumns")] [Table(Name = "tb_topicIgnoreColumns")]
class TopicIgnore 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 }); 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(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(); //items = Enumerable.Range(0, 9989).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList();
//Assert.Equal(9989, _sqlserverFixture.SqlServer.Insert<Topic>(items).ExecuteAffrows()); //Assert.Equal(9989, g.sqlserver.Insert<Topic>(items).ExecuteAffrows());
//var bttype = new TestBetchInsertType { title = "testbttitle1" }; //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); //Assert.True(bttype.id > 0);
//var bttopic = Enumerable.Range(0, 10000).Select(a => new TestBetchInsertTopic { TypeId = bttype.id, Text = $"testtopic{a}" }).ToArray(); //var bttopic = Enumerable.Range(0, 10000).Select(a => new TestBetchInsertTopic { TypeId = bttype.id, Text = $"testtopic{a}" }).ToArray();
//Assert.Equal(bttopic.Length, _sqlserverFixture.SqlServer.Insert<TestBetchInsertTopic>(bttopic).ExecuteAffrows()); //Assert.Equal(bttopic.Length, g.sqlserver.Insert<TestBetchInsertTopic>(bttopic).ExecuteAffrows());
//_sqlserverFixture.SqlServer.Transaction(() => //g.sqlserver.Transaction(() =>
//{ //{
// bttype = new TestBetchInsertType { title = "transaction_testbttitle2" }; // 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); // Assert.True(bttype.id > 0);
// bttopic = Enumerable.Range(0, 10000).Select(a => new TestBetchInsertTopic { TypeId = bttype.id, Text = $"transaction_testtopic{a}" }).ToArray(); // bttopic = Enumerable.Range(0, 10000).Select(a => new TestBetchInsertTopic { TypeId = bttype.id, Text = $"transaction_testtopic{a}" }).ToArray();
// Assert.Equal(bttopic.Length, _sqlserverFixture.SqlServer.Insert<TestBetchInsertTopic>(bttopic).ExecuteAffrows()); // Assert.Equal(bttopic.Length, g.sqlserver.Insert<TestBetchInsertTopic>(bttopic).ExecuteAffrows());
//}); //});
_sqlserverFixture.SqlServer.Transaction(() => g.sqlserver.Transaction(() =>
{ {
var order = new AdjustPriceOrder { }; 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); Assert.True(order.Id > 0);
var detail = Enumerable.Range(0, 10000).Select(a => new AdjustPriceDetail { Remark = $"transaction_testdetail{a}" }).ToArray(); var detail = Enumerable.Range(0, 10000).Select(a => new AdjustPriceDetail { Remark = $"transaction_testdetail{a}" }).ToArray();
Assert.Equal(detail.Length, _sqlserverFixture.SqlServer.Insert<AdjustPriceDetail>(detail).NoneParameter().ExecuteAffrows()); Assert.Equal(detail.Length, g.sqlserver.Insert<AdjustPriceDetail>(detail).NoneParameter().ExecuteAffrows());
}); });
} }
class TestBetchInsertType { 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(); //items = Enumerable.Range(0, 9999).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList();
//var lastId = g.sqlite.Select<Topic>().Max(a => a.Id); //var lastId = g.sqlite.Select<Topic>().Max(a => a.Id);
//Assert.NotEqual(lastId, _sqlserverFixture.SqlServer.Insert<Topic>(items).ExecuteIdentity()); //Assert.NotEqual(lastId, g.sqlserver.Insert<Topic>(items).ExecuteIdentity());
} }
[Fact] [Fact]
public void ExecuteInserted() public void ExecuteInserted()
@ -160,7 +160,7 @@ namespace FreeSql.Tests.SqlServer
var items2 = insert.AppendData(items).ExecuteInserted(); var items2 = insert.AppendData(items).ExecuteInserted();
items = Enumerable.Range(0, 90).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList(); items = Enumerable.Range(0, 90).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList();
var itemsInserted = _sqlserverFixture.SqlServer.Insert<Topic>(items).ExecuteInserted(); var itemsInserted = g.sqlserver.Insert<Topic>(items).ExecuteInserted();
Assert.Equal(items.First().Title, itemsInserted.First().Title); Assert.Equal(items.First().Title, itemsInserted.First().Title);
Assert.Equal(items.Last().Title, itemsInserted.Last().Title); Assert.Equal(items.Last().Title, itemsInserted.Last().Title);
} }

View File

@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServer
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>(); ISelect<Topic> select => g.sqlserver.Select<Topic>();
[Table(Name = "tb_topic22")] [Table(Name = "tb_topic22")]
class Topic class Topic
@ -83,7 +83,7 @@ namespace FreeSql.Tests.SqlServer
public void AsSelect() public void AsSelect()
{ {
//OneToOne、ManyToOne //OneToOne、ManyToOne
var t0 = _sqlserverFixture.SqlServer.Select<Tag>().Where(a => a.Parent.Parent.Name == "粤语").ToSql(); var t0 = g.sqlserver.Select<Tag>().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 //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 //FROM [Tag] a
//LEFT JOIN [Tag] a__Parent ON a__Parent.[Id] = a.[Parent_id] //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] = '粤语') //WHERE (a__Parent__Parent.[Name] = '粤语')
//OneToMany //OneToMany
var t1 = _sqlserverFixture.SqlServer.Select<Tag>().Where(a => a.Tags.AsSelect().Any(t => t.Parent.Id == 10)).ToSql(); var t1 = g.sqlserver.Select<Tag>().Where(a => a.Tags.AsSelect().Any(t => t.Parent.Id == 10)).ToSql();
//SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name] //SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name]
//FROM [Tag] a //FROM [Tag] a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
@ -101,7 +101,7 @@ namespace FreeSql.Tests.SqlServer
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = _sqlserverFixture.SqlServer.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.sqlserver.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url] //SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url]
//FROM [Song] a //FROM [Song] a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
@ -116,11 +116,11 @@ namespace FreeSql.Tests.SqlServer
[Fact] [Fact]
public void Lazy() public void Lazy()
{ {
var tags = _sqlserverFixture.SqlServer.Select<Tag>().Where(a => a.Parent.Name == "xxx") var tags = g.sqlserver.Select<Tag>().Where(a => a.Parent.Name == "xxx")
.LeftJoin(a => a.Parent_id == a.Parent.Id) .LeftJoin(a => a.Parent_id == a.Parent.Id)
.ToSql(); .ToSql();
var songs = _sqlserverFixture.SqlServer.Select<Song>().Limit(10).ToList(); var songs = g.sqlserver.Select<Song>().Limit(10).ToList();
} }
@ -130,12 +130,12 @@ namespace FreeSql.Tests.SqlServer
var items = new List<Topic>(); var items = new List<Topic>();
for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100, CreateTime = DateTime.Now }); 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<Topic>().AppendData(items.First()).ExecuteInserted()); Assert.Single(g.sqlserver.Insert<Topic>().AppendData(items.First()).ExecuteInserted());
Assert.Equal(10, _sqlserverFixture.SqlServer.Insert<Topic>().AppendData(items).ExecuteInserted().Count); Assert.Equal(10, g.sqlserver.Insert<Topic>().AppendData(items).ExecuteInserted().Count);
//items = Enumerable.Range(0, 9989).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList(); //items = Enumerable.Range(0, 9989).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList();
//; //;
//Assert.Equal(9989, _sqlserverFixture.SqlServer.Insert<Topic>(items).NoneParameter().ExecuteAffrows()); //Assert.Equal(9989, g.sqlserver.Insert<Topic>(items).NoneParameter().ExecuteAffrows());
var dt1 = select.Limit(10).ToDataTable(); var dt1 = select.Limit(10).ToDataTable();
var dt2 = select.Limit(10).ToDataTable("id, getdate()"); 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 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() { }); var testDto44 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto() { });
_sqlserverFixture.SqlServer.Insert<TestGuidIdToList>().AppendData(new TestGuidIdToList()).ExecuteAffrows(); g.sqlserver.Insert<TestGuidIdToList>().AppendData(new TestGuidIdToList()).ExecuteAffrows();
var testGuidId5 = _sqlserverFixture.SqlServer.Select<TestGuidIdToList>().ToList(); var testGuidId5 = g.sqlserver.Select<TestGuidIdToList>().ToList();
var testGuidId6 = _sqlserverFixture.SqlServer.Select<TestGuidIdToList>().ToList(a => a.id); var testGuidId6 = g.sqlserver.Select<TestGuidIdToList>().ToList(a => a.id);
var t11 = select.Where(a => a.Type.Name.Length > 0).ToList(true); 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); 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) ccc3 = a.Max(a.Value.Item3.Id)
}); });
var testpid1 = _sqlserverFixture.SqlServer.Insert<TestTypeInfo>().AppendData(new TestTypeInfo { Name = "Name" + DateTime.Now.ToString("yyyyMMddHHmmss") }).ExecuteIdentity(); var testpid1 = g.sqlserver.Insert<TestTypeInfo>().AppendData(new TestTypeInfo { Name = "Name" + DateTime.Now.ToString("yyyyMMddHHmmss") }).ExecuteIdentity();
_sqlserverFixture.SqlServer.Insert<TestInfo>().AppendData(new TestInfo { Title = "Title" + DateTime.Now.ToString("yyyyMMddHHmmss"), CreateTime = DateTime.Now, TypeGuid = (int)testpid1 }).ExecuteAffrows(); g.sqlserver.Insert<TestInfo>().AppendData(new TestInfo { Title = "Title" + DateTime.Now.ToString("yyyyMMddHHmmss"), CreateTime = DateTime.Now, TypeGuid = (int)testpid1 }).ExecuteAffrows();
var aggsql1 = select var aggsql1 = select
.GroupBy(a => a.Title) .GroupBy(a => a.Title)
@ -919,16 +919,16 @@ namespace FreeSql.Tests.SqlServer
public void Include_OneToMany() public void Include_OneToMany()
{ {
var model1 = new TestInclude_OneToManyModel1 { m1name = DateTime.Now.Second.ToString() }; 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() }; 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" }; 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" }; 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" }; 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[] { var model4s = new[] {
new TestInclude_OneToManyModel4{ model3333Id333 = model3_1.id, title444 = "testmodel3_4__111" }, 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__222" },
new TestInclude_OneToManyModel4{ model3333Id333 = model3_2.id, title444 = "testmodel3_4__333" } 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<TestInclude_OneToManyModel2>() var t0 = g.sqlserver.Select<TestInclude_OneToManyModel2>()
.IncludeMany(a => a.childs.Where(m3 => m3.model2111Idaaa == a.model2id)) .IncludeMany(a => a.childs.Where(m3 => m3.model2111Idaaa == a.model2id))
.Where(a => a.model2id <= model1.id) .Where(a => a.model2id <= model1.id)
.ToList(); .ToList();
var t1 = _sqlserverFixture.SqlServer.Select<TestInclude_OneToManyModel1>() var t1 = g.sqlserver.Select<TestInclude_OneToManyModel1>()
.IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id)) .IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id))
.Where(a => a.id <= model1.id) .Where(a => a.id <= model1.id)
.ToList(); .ToList();
var t2 = _sqlserverFixture.SqlServer.Select<TestInclude_OneToManyModel1>() var t2 = g.sqlserver.Select<TestInclude_OneToManyModel1>()
.IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id), .IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id),
then => then.IncludeMany(m3 => m3.childs2.Where(m4 => m4.model3333Id333 == m3.id))) then => then.IncludeMany(m3 => m3.childs2.Where(m4 => m4.model3333Id333 == m3.id)))
.Where(a => a.id <= model1.id) .Where(a => a.id <= model1.id)
.ToList(); .ToList();
var t00 = _sqlserverFixture.SqlServer.Select<TestInclude_OneToManyModel2>() var t00 = g.sqlserver.Select<TestInclude_OneToManyModel2>()
.IncludeMany(a => a.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2id)) .IncludeMany(a => a.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2id))
.Where(a => a.model2id <= model1.id) .Where(a => a.model2id <= model1.id)
.ToList(); .ToList();
var t11 = _sqlserverFixture.SqlServer.Select<TestInclude_OneToManyModel1>() var t11 = g.sqlserver.Select<TestInclude_OneToManyModel1>()
.IncludeMany(a => a.model2.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2.model2id)) .IncludeMany(a => a.model2.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2.model2id))
.Where(a => a.id <= model1.id) .Where(a => a.id <= model1.id)
.ToList(); .ToList();
var t22 = _sqlserverFixture.SqlServer.Select<TestInclude_OneToManyModel1>() var t22 = g.sqlserver.Select<TestInclude_OneToManyModel1>()
.IncludeMany(a => a.model2.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2.model2id), .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))) then => then.IncludeMany(m3 => m3.childs2.Take(2).Where(m4 => m4.model3333Id333 == m3.id)))
.Where(a => a.id <= model1.id) .Where(a => a.id <= model1.id)
@ -1038,7 +1038,7 @@ namespace FreeSql.Tests.SqlServer
{ {
string setting = "x"; string setting = "x";
var model2 = new TestInclude_OneToManyModel22 { m2setting = DateTime.Now.Second.ToString(), aaa = "aaa" + DateTime.Now.Second, bbb = "bbb" + DateTime.Now.Second }; 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[] 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__222", setting = setting},
new TestInclude_OneToManyModel33 {model2Id = model2.id, title = "testmodel3__333", 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 }; 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<TestInclude_OneToManyModel11>() var t1 = g.sqlserver.Select<TestInclude_OneToManyModel11>()
.LeftJoin(a => a.model2id == a.model2.id) .LeftJoin(a => a.model2id == a.model2.id)
.IncludeMany(a => a.model2.childs.Where(m3 => m3.model2Id == a.model2.id && m3.setting == a.m3setting)) .IncludeMany(a => a.model2.childs.Where(m3 => m3.model2Id == a.model2.id && m3.setting == a.m3setting))
.Where(a => a.id <= model1.id) .Where(a => a.id <= model1.id)
.ToList(true); .ToList(true);
var t11 = _sqlserverFixture.SqlServer.Select<TestInclude_OneToManyModel11>() var t11 = g.sqlserver.Select<TestInclude_OneToManyModel11>()
.LeftJoin(a => a.model2id == a.model2.id) .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)) .IncludeMany(a => a.model2.childs.Take(1).Where(m3 => m3.model2Id == a.model2.id && m3.setting == a.m3setting))
.Where(a => a.id <= model1.id) .Where(a => a.id <= model1.id)
@ -1086,56 +1086,56 @@ namespace FreeSql.Tests.SqlServer
Ddd = DateTime.Now.Second, Ddd = DateTime.Now.Second,
Name = "test_oneToChilds_01_中国" 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 var tag1_1 = new Tag
{ {
Parent_id = tag1.Id, Parent_id = tag1.Id,
Ddd = DateTime.Now.Second, Ddd = DateTime.Now.Second,
Name = "test_oneToChilds_01_北京" 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 var tag1_2 = new Tag
{ {
Parent_id = tag1.Id, Parent_id = tag1.Id,
Ddd = DateTime.Now.Second, Ddd = DateTime.Now.Second,
Name = "test_oneToChilds_01_上海" 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 var tag2 = new Tag
{ {
Ddd = DateTime.Now.Second, Ddd = DateTime.Now.Second,
Name = "test_oneToChilds_02_美国" 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 var tag2_1 = new Tag
{ {
Parent_id = tag2.Id, Parent_id = tag2.Id,
Ddd = DateTime.Now.Second, Ddd = DateTime.Now.Second,
Name = "test_oneToChilds_02_纽约" 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 var tag2_2 = new Tag
{ {
Parent_id = tag2.Id, Parent_id = tag2.Id,
Ddd = DateTime.Now.Second, Ddd = DateTime.Now.Second,
Name = "test_oneToChilds_02_华盛顿" 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<Tag>() var tags0 = g.sqlserver.Select<Tag>()
.Include(a => a.Parent) .Include(a => a.Parent)
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
.ToList(); .ToList();
var tags1 = _sqlserverFixture.SqlServer.Select<Tag>() var tags1 = g.sqlserver.Select<Tag>()
.IncludeMany(a => a.Tags) .IncludeMany(a => a.Tags)
.Include(a => a.Parent) .Include(a => a.Parent)
.IncludeMany(a => a.Songs) .IncludeMany(a => a.Songs)
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
.ToList(); .ToList();
var tags2 = _sqlserverFixture.SqlServer.Select<Tag>() var tags2 = g.sqlserver.Select<Tag>()
.IncludeMany(a => a.Tags, .IncludeMany(a => a.Tags,
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs)) then => then.Include(a => a.Parent).IncludeMany(a => a.Songs))
.Include(a => a.Parent) .Include(a => a.Parent)
@ -1143,7 +1143,7 @@ namespace FreeSql.Tests.SqlServer
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
.ToList(); .ToList();
var tags3 = _sqlserverFixture.SqlServer.Select<Tag>() var tags3 = g.sqlserver.Select<Tag>()
.IncludeMany(a => a.Tags, .IncludeMany(a => a.Tags,
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs).IncludeMany(a => a.Tags)) then => then.Include(a => a.Parent).IncludeMany(a => a.Songs).IncludeMany(a => a.Tags))
.Include(a => a.Parent) .Include(a => a.Parent)
@ -1151,14 +1151,14 @@ namespace FreeSql.Tests.SqlServer
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
.ToList(); .ToList();
var tags11 = _sqlserverFixture.SqlServer.Select<Tag>() var tags11 = g.sqlserver.Select<Tag>()
.IncludeMany(a => a.Tags.Take(1)) .IncludeMany(a => a.Tags.Take(1))
.Include(a => a.Parent) .Include(a => a.Parent)
.IncludeMany(a => a.Songs.Take(1)) .IncludeMany(a => a.Songs.Take(1))
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
.ToList(); .ToList();
var tags22 = _sqlserverFixture.SqlServer.Select<Tag>() var tags22 = g.sqlserver.Select<Tag>()
.IncludeMany(a => a.Tags.Take(1), .IncludeMany(a => a.Tags.Take(1),
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1))) then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)))
.Include(a => a.Parent) .Include(a => a.Parent)
@ -1166,7 +1166,7 @@ namespace FreeSql.Tests.SqlServer
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id) .Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
.ToList(); .ToList();
var tags33 = _sqlserverFixture.SqlServer.Select<Tag>() var tags33 = g.sqlserver.Select<Tag>()
.IncludeMany(a => a.Tags.Take(1), .IncludeMany(a => a.Tags.Take(1),
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)).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) .Include(a => a.Parent)
@ -1237,19 +1237,19 @@ namespace FreeSql.Tests.SqlServer
Ddd = DateTime.Now.Second, Ddd = DateTime.Now.Second,
Name = "test_manytoMany_01_中国" Name = "test_manytoMany_01_中国"
}; };
tag1.Id = (int)_sqlserverFixture.SqlServer.Insert(tag1).ExecuteIdentity(); tag1.Id = (int)g.sqlserver.Insert(tag1).ExecuteIdentity();
var tag2 = new Tag var tag2 = new Tag
{ {
Ddd = DateTime.Now.Second, Ddd = DateTime.Now.Second,
Name = "test_manytoMany_02_美国" Name = "test_manytoMany_02_美国"
}; };
tag2.Id = (int)_sqlserverFixture.SqlServer.Insert(tag2).ExecuteIdentity(); tag2.Id = (int)g.sqlserver.Insert(tag2).ExecuteIdentity();
var tag3 = new Tag var tag3 = new Tag
{ {
Ddd = DateTime.Now.Second, Ddd = DateTime.Now.Second,
Name = "test_manytoMany_03_日本" Name = "test_manytoMany_03_日本"
}; };
tag3.Id = (int)_sqlserverFixture.SqlServer.Insert(tag3).ExecuteIdentity(); tag3.Id = (int)g.sqlserver.Insert(tag3).ExecuteIdentity();
var song1 = new Song var song1 = new Song
{ {
@ -1257,30 +1257,30 @@ namespace FreeSql.Tests.SqlServer
Title = "test_manytoMany_01_我是中国人.mp3", Title = "test_manytoMany_01_我是中国人.mp3",
Url = "http://ww.baidu.com/" 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 var song2 = new Song
{ {
Create_time = DateTime.Now, Create_time = DateTime.Now,
Title = "test_manytoMany_02_爱你一万年.mp3", Title = "test_manytoMany_02_爱你一万年.mp3",
Url = "http://ww.163.com/" 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 var song3 = new Song
{ {
Create_time = DateTime.Now, Create_time = DateTime.Now,
Title = "test_manytoMany_03_千年等一回.mp3", Title = "test_manytoMany_03_千年等一回.mp3",
Url = "http://ww.sina.com/" 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(); g.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(); g.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(); g.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(); g.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(); g.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 = song3.Id, Tag_id = tag3.Id }).ExecuteAffrows();
var songs1 = _sqlserverFixture.SqlServer.Select<Song>() var songs1 = g.sqlserver.Select<Song>()
.IncludeMany(a => a.Tags) .IncludeMany(a => a.Tags)
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id) .Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
.ToList(); .ToList();
@ -1289,7 +1289,7 @@ namespace FreeSql.Tests.SqlServer
Assert.Equal(1, songs1[1].Tags.Count); Assert.Equal(1, songs1[1].Tags.Count);
Assert.Equal(3, songs1[2].Tags.Count); Assert.Equal(3, songs1[2].Tags.Count);
var songs2 = _sqlserverFixture.SqlServer.Select<Song>() var songs2 = g.sqlserver.Select<Song>()
.IncludeMany(a => a.Tags, .IncludeMany(a => a.Tags,
then => then.IncludeMany(t => t.Songs)) then => then.IncludeMany(t => t.Songs))
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id) .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(1, songs2[1].Tags.Count);
Assert.Equal(3, songs2[2].Tags.Count); Assert.Equal(3, songs2[2].Tags.Count);
var tags3 = _sqlserverFixture.SqlServer.Select<Song_tag>() var tags3 = g.sqlserver.Select<Song_tag>()
.Include(a => a.Tag.Parent) .Include(a => a.Tag.Parent)
.IncludeMany(a => a.Tag.Songs) .IncludeMany(a => a.Tag.Songs)
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id) .Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true); .ToList(true);
var songs11 = _sqlserverFixture.SqlServer.Select<Song>() var songs11 = g.sqlserver.Select<Song>()
.IncludeMany(a => a.Tags.Take(1)) .IncludeMany(a => a.Tags.Take(1))
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id) .Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
.ToList(); .ToList();
@ -1315,7 +1315,7 @@ namespace FreeSql.Tests.SqlServer
Assert.Equal(1, songs11[1].Tags.Count); Assert.Equal(1, songs11[1].Tags.Count);
Assert.Equal(1, songs11[2].Tags.Count); Assert.Equal(1, songs11[2].Tags.Count);
var songs22 = _sqlserverFixture.SqlServer.Select<Song>() var songs22 = g.sqlserver.Select<Song>()
.IncludeMany(a => a.Tags.Take(1), .IncludeMany(a => a.Tags.Take(1),
then => then.IncludeMany(t => t.Songs.Take(1))) then => then.IncludeMany(t => t.Songs.Take(1)))
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id) .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[1].Tags.Count);
Assert.Equal(1, songs22[2].Tags.Count); Assert.Equal(1, songs22[2].Tags.Count);
var tags33 = _sqlserverFixture.SqlServer.Select<Song_tag>() var tags33 = g.sqlserver.Select<Song_tag>()
.Include(a => a.Tag.Parent) .Include(a => a.Tag.Parent)
.IncludeMany(a => a.Tag.Songs.Take(1)) .IncludeMany(a => a.Tag.Songs.Take(1))
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id) .Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)

View File

@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServer
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
IUpdate<Topic> update => _sqlserverFixture.SqlServer.Update<Topic>(); IUpdate<Topic> update => g.sqlserver.Update<Topic>();
[Table(Name = "tb_topic")] [Table(Name = "tb_topic")]
class Topic class Topic
@ -35,11 +35,11 @@ namespace FreeSql.Tests.SqlServer
[Fact] [Fact]
public void Dywhere() public void Dywhere()
{ {
Assert.Null(_sqlserverFixture.SqlServer.Update<Topic>().ToSql()); Assert.Null(g.sqlserver.Update<Topic>().ToSql());
Assert.Equal("UPDATE [tb_topic] SET title='test' \r\nWHERE ([Id] = 1 OR [Id] = 2)", _sqlserverFixture.SqlServer.Update<Topic>(new[] { 1, 2 }).SetRaw("title='test'").ToSql()); Assert.Equal("UPDATE [tb_topic] SET title='test' \r\nWHERE ([Id] = 1 OR [Id] = 2)", g.sqlserver.Update<Topic>(new[] { 1, 2 }).SetRaw("title='test'").ToSql());
Assert.Equal("UPDATE [tb_topic] SET title='test1' \r\nWHERE ([Id] = 1)", _sqlserverFixture.SqlServer.Update<Topic>(new Topic { Id = 1, Title = "test" }).SetRaw("title='test1'").ToSql()); Assert.Equal("UPDATE [tb_topic] SET title='test1' \r\nWHERE ([Id] = 1)", g.sqlserver.Update<Topic>(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<Topic>(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 OR [Id] = 2)", g.sqlserver.Update<Topic>(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<Topic>(new { id = 1 }).SetRaw("title='test1'").ToSql()); Assert.Equal("UPDATE [tb_topic] SET title='test1' \r\nWHERE ([Id] = 1)", g.sqlserver.Update<Topic>(new { id = 1 }).SetRaw("title='test1'").ToSql());
} }
[Fact] [Fact]
@ -140,26 +140,26 @@ namespace FreeSql.Tests.SqlServer
[Fact] [Fact]
public void ExecuteUpdated() public void ExecuteUpdated()
{ {
_sqlserverFixture.SqlServer.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows(); g.sqlserver.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
_sqlserverFixture.SqlServer.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows(); g.sqlserver.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
_sqlserverFixture.SqlServer.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows(); g.sqlserver.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
_sqlserverFixture.SqlServer.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows(); g.sqlserver.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
var items = _sqlserverFixture.SqlServer.Select<Topic>().Limit(2).ToList(); var items = g.sqlserver.Select<Topic>().Limit(2).ToList();
_sqlserverFixture.SqlServer.Update<Topic>(items).SetRaw("title='test'").ExecuteUpdated(); g.sqlserver.Update<Topic>(items).SetRaw("title='test'").ExecuteUpdated();
items = _sqlserverFixture.SqlServer.Select<Topic>().Limit(2).ToList(); items = g.sqlserver.Select<Topic>().Limit(2).ToList();
var result = _sqlserverFixture.SqlServer.Update<Topic>(items).SetRaw("title='test'").ExecuteUpdatedAsync().Result; var result = g.sqlserver.Update<Topic>(items).SetRaw("title='test'").ExecuteUpdatedAsync().Result;
} }
[Fact] [Fact]
public void AsTable() public void AsTable()
{ {
Assert.Null(_sqlserverFixture.SqlServer.Update<Topic>().ToSql()); Assert.Null(g.sqlserver.Update<Topic>().ToSql());
Assert.Equal("UPDATE [tb_topicAsTable] SET title='test' \r\nWHERE ([Id] = 1 OR [Id] = 2)", _sqlserverFixture.SqlServer.Update<Topic>(new[] { 1, 2 }).SetRaw("title='test'").AsTable(a => "tb_topicAsTable").ToSql()); Assert.Equal("UPDATE [tb_topicAsTable] SET title='test' \r\nWHERE ([Id] = 1 OR [Id] = 2)", g.sqlserver.Update<Topic>(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<Topic>(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)", g.sqlserver.Update<Topic>(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<Topic>(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 OR [Id] = 2)", g.sqlserver.Update<Topic>(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<Topic>(new { id = 1 }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql()); Assert.Equal("UPDATE [tb_topicAsTable] SET title='test1' \r\nWHERE ([Id] = 1)", g.sqlserver.Update<Topic>(new { id = 1 }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql());
} }
} }
} }

View File

@ -73,7 +73,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Bool() public void Bool()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tobool == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tobool == true).First();
@ -155,7 +155,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void SByte() public void SByte()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tosbyte == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tosbyte == true).First();
@ -237,7 +237,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void SByteNullable() public void SByteNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tosbytenullable == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tosbytenullable == true).First();
@ -319,7 +319,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Short() public void Short()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toshort == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toshort == true).First();
@ -401,7 +401,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void ShortNullable() public void ShortNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toshortnullable == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toshortnullable == true).First();
@ -483,7 +483,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Int() public void Int()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toint == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toint == true).First();
@ -565,7 +565,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void IntNullable() public void IntNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tointnullable == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tointnullable == true).First();
@ -647,7 +647,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Long() public void Long()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tolong == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tolong == true).First();
@ -729,7 +729,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void LongNullable() public void LongNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tolongnullable == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tolongnullable == true).First();
@ -812,7 +812,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Byte() public void Byte()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tobyte == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tobyte == true).First();
@ -894,7 +894,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void ByteNullable() public void ByteNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tobytenullable == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tobytenullable == true).First();
@ -976,7 +976,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void UShort() public void UShort()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toushort == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toushort == true).First();
@ -1058,7 +1058,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void UShortNullable() public void UShortNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toushortnullable == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toushortnullable == true).First();
@ -1140,7 +1140,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void UInt() public void UInt()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.touint == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.touint == true).First();
@ -1222,7 +1222,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void UIntNullable() public void UIntNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.touintnullable == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.touintnullable == true).First();
@ -1304,7 +1304,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void ULong() public void ULong()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toulong == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toulong == true).First();
@ -1386,7 +1386,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void ULongNullable() public void ULongNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toulongnullable == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.toulongnullable == true).First();
@ -1490,7 +1490,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void String() public void String()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolNullableMap { }; var item = new BoolNullableMap { };
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tostring == true).First(); var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tostring == true).First();

View File

@ -74,7 +74,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void BoolNullable() public void BoolNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toboolnullable == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toboolnullable == true).First();
@ -130,7 +130,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void SByte() public void SByte()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tosbyte == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tosbyte == true).First();
@ -186,7 +186,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void SByteNullable() public void SByteNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tosbytenullable == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tosbytenullable == true).First();
@ -242,7 +242,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Short() public void Short()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toshort == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toshort == true).First();
@ -298,7 +298,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void ShortNullable() public void ShortNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toshortnullable == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toshortnullable == true).First();
@ -354,7 +354,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Int() public void Int()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toint == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toint == true).First();
@ -410,7 +410,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void IntNullable() public void IntNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tointnullable == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tointnullable == true).First();
@ -466,7 +466,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Long() public void Long()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tolong == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tolong == true).First();
@ -522,7 +522,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void LongNullable() public void LongNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tolongnullable == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tolongnullable == true).First();
@ -579,7 +579,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Byte() public void Byte()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tobyte == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tobyte == true).First();
@ -635,7 +635,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void ByteNullable() public void ByteNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tobytenullable == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tobytenullable == true).First();
@ -691,7 +691,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void UShort() public void UShort()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toushort == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toushort == true).First();
@ -747,7 +747,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void UShortNullable() public void UShortNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toushortnullable == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toushortnullable == true).First();
@ -803,7 +803,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void UInt() public void UInt()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.touint == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.touint == true).First();
@ -859,7 +859,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void UIntNullable() public void UIntNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.touintnullable == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.touintnullable == true).First();
@ -915,7 +915,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void ULong() public void ULong()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toulong == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toulong == true).First();
@ -971,7 +971,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void ULongNullable() public void ULongNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toulongnullable == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.toulongnullable == true).First();
@ -1049,7 +1049,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void String() public void String()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new BoolMap { }; var item = new BoolMap { };
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tostring == true).First(); var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tostring == true).First();

View File

@ -36,7 +36,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void EnumToString() public void EnumToString()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new EnumTestMap { }; var item = new EnumTestMap { };
Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.ÖйúÈË).First(); var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.ÖйúÈË).First();
@ -93,7 +93,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void EnumNullableToString() public void EnumNullableToString()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new EnumTestMap { }; var item = new EnumTestMap { };
Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == null).First(); var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == null).First();
@ -154,7 +154,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void EnumToInt() public void EnumToInt()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new EnumTestMap { }; var item = new EnumTestMap { };
Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.ÖйúÈË).First(); var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.ÖйúÈË).First();
@ -211,7 +211,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void EnumNullableToInt() public void EnumNullableToInt()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new EnumTestMap { }; var item = new EnumTestMap { };
Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == null).First(); var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == null).First();

View File

@ -50,7 +50,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Enum1() public void Enum1()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.ÖйúÈË).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.ÖйúÈË).First();
@ -107,7 +107,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void EnumNullable() public void EnumNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.enumnullable_to_string == null).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.enumnullable_to_string == null).First();
@ -167,7 +167,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void BigInteger1() public void BigInteger1()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.biginteger_to_string == 0).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.biginteger_to_string == 0).First();
@ -224,7 +224,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void BigIntegerNullable() public void BigIntegerNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.bigintegernullable_to_string == null).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.bigintegernullable_to_string == null).First();
@ -284,7 +284,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void TimeSpan1() public void TimeSpan1()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First();
@ -325,7 +325,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void TimeSpanNullable() public void TimeSpanNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First();
@ -380,7 +380,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void DateTime1() public void DateTime1()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First();
@ -421,7 +421,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void DateTimeNullable() public void DateTimeNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First();
@ -477,7 +477,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void Guid1() public void Guid1()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.guid_to_string == Guid.Empty).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.guid_to_string == Guid.Empty).First();
@ -521,7 +521,7 @@ namespace FreeSql.Tests.SqlServerMapType
public void GuidNullable() public void GuidNullable()
{ {
//insert //insert
var orm = _sqlserverFixture.SqlServer; var orm = g.sqlserver;
var item = new ToStringMap { }; var item = new ToStringMap { };
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.guidnullable_to_string == null).First(); var find = orm.Select<ToStringMap>().Where(a => a.id == item.id && a.guidnullable_to_string == null).First();

View File

@ -18,13 +18,13 @@ namespace FreeSql.Tests.SqlServer
[Fact] [Fact]
public void Pool() public void Pool()
{ {
var t1 = _sqlserverFixture.SqlServer.Ado.MasterPool.StatisticsFullily; var t1 = g.sqlserver.Ado.MasterPool.StatisticsFullily;
} }
[Fact] [Fact]
public void SlavePools() public void SlavePools()
{ {
var t2 = _sqlserverFixture.SqlServer.Ado.SlavePools.Count; var t2 = g.sqlserver.Ado.SlavePools.Count;
} }
[Fact] [Fact]
@ -52,42 +52,42 @@ namespace FreeSql.Tests.SqlServer
public void Query() public void Query()
{ {
//var tt1 = _sqlserverFixture.SqlServer.Select<xxx>() //var tt1 = g.sqlserver.Select<xxx>()
// .LeftJoin(a => a.ParentId == a.Parent.Id) // .LeftJoin(a => a.ParentId == a.Parent.Id)
// .ToSql(a => new { a.Id, a.Title }); // .ToSql(a => new { a.Id, a.Title });
//var tt2result = _sqlserverFixture.SqlServer.Select<xxx>() //var tt2result = g.sqlserver.Select<xxx>()
// .LeftJoin(a => a.ParentId == a.Parent.Id) // .LeftJoin(a => a.ParentId == a.Parent.Id)
// .ToList(a => new { a.Id, a.Title }); // .ToList(a => new { a.Id, a.Title });
//var tt = _sqlserverFixture.SqlServer.Select<xxx>() //var tt = g.sqlserver.Select<xxx>()
// .LeftJoin<xxx>((a, b) => b.Id == a.Id) // .LeftJoin<xxx>((a, b) => b.Id == a.Id)
// .ToSql(a => new { a.Id, a.Title }); // .ToSql(a => new { a.Id, a.Title });
//var ttresult = _sqlserverFixture.SqlServer.Select<xxx>() //var ttresult = g.sqlserver.Select<xxx>()
// .LeftJoin<xxx>((a, b) => b.Id == a.Id) // .LeftJoin<xxx>((a, b) => b.Id == a.Id)
// .ToList(a => new { a.Id, a.Title }); // .ToList(a => new { a.Id, a.Title });
var tnsql1 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id); var tnsql1 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id);
var tnsql2 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToSql(a => a.Id); var tnsql2 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToSql(a => a.Id);
var tn1 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToList(a => a.Id); var tn1 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToList(a => a.Id);
var tn2 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToList(a => a.Id); var tn2 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToList(a => a.Id);
var t3 = _sqlserverFixture.SqlServer.Ado.Query<xxx>("select * from xxx"); var t3 = g.sqlserver.Ado.Query<xxx>("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<dynamic>(System.Data.CommandType.Text, "select * from xxx where Id = @Id", var t5 = g.sqlserver.Ado.Query<dynamic>(System.Data.CommandType.Text, "select * from xxx where Id = @Id",
new System.Data.SqlClient.SqlParameter("Id", 1)); new System.Data.SqlClient.SqlParameter("Id", 1));
} }
[Fact] [Fact]
public void QueryMultipline() public void QueryMultipline()
{ {
var tnsql1 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id); var tnsql1 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id);
var t3 = _sqlserverFixture.SqlServer.Ado.Query<xxx, (int, string, string), dynamic>("select * from xxx; select * from xxx; select * from xxx"); var t3 = g.sqlserver.Ado.Query<xxx, (int, string, string), dynamic>("select * from xxx; select * from xxx; select * from xxx");
} }
class xxx class xxx

View File

@ -9,32 +9,23 @@ using Xunit;
namespace FreeSql.Tests.SqlServer namespace FreeSql.Tests.SqlServer
{ {
[Collection("SqlServerCollection")]
public class SqlServerCodeFirstTest public class SqlServerCodeFirstTest
{ {
SqlServerFixture _sqlserverFixture;
public SqlServerCodeFirstTest(SqlServerFixture sqlserverFixture)
{
_sqlserverFixture = sqlserverFixture;
}
[Fact] [Fact]
public void _字段() public void _字段()
{ {
var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<>(); var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<>();
_sqlserverFixture.SqlServer.CodeFirst.SyncStructure<>(); g.sqlserver.CodeFirst.SyncStructure<>();
var item = new var item = new
{ {
= "测试标题", = "测试标题",
= DateTime.Now = 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.); 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.NotNull(item2);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
@ -53,8 +44,8 @@ namespace FreeSql.Tests.SqlServer
[Fact] [Fact]
public void AddUniques() public void AddUniques()
{ {
var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>(); var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
_sqlserverFixture.SqlServer.CodeFirst.SyncStructure<AddUniquesInfo>(); g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
} }
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")] [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
[Index("uk_phone", "phone", true)] [Index("uk_phone", "phone", true)]
@ -73,9 +64,9 @@ namespace FreeSql.Tests.SqlServer
[Fact] [Fact]
public void AddField() public void AddField()
{ {
var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<TopicAddField>(); var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<TopicAddField>();
var id = _sqlserverFixture.SqlServer.Insert<TopicAddField>().AppendData(new TopicAddField { }).ExecuteIdentity(); var id = g.sqlserver.Insert<TopicAddField>().AppendData(new TopicAddField { }).ExecuteIdentity();
} }
[Table(Name = "dbo2.TopicAddField", OldName = "tedb1.dbo.TopicAddField")] [Table(Name = "dbo2.TopicAddField", OldName = "tedb1.dbo.TopicAddField")]
@ -103,13 +94,13 @@ namespace FreeSql.Tests.SqlServer
public void GetComparisonDDLStatements() public void GetComparisonDDLStatements()
{ {
var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<TableAllType>(); var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<TableAllType>();
sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<Tb_alltype>(); sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<Tb_alltype>();
} }
IInsert<TableAllType> insert => _sqlserverFixture.SqlServer.Insert<TableAllType>(); IInsert<TableAllType> insert => g.sqlserver.Insert<TableAllType>();
ISelect<TableAllType> select => _sqlserverFixture.SqlServer.Select<TableAllType>(); ISelect<TableAllType> select => g.sqlserver.Select<TableAllType>();
[Fact] [Fact]
public void CurdAllField() public void CurdAllField()

View File

@ -20,7 +20,7 @@ namespace FreeSql.Tests.SqlServer
public void GetDatabases() 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() public void GetTablesByDatabase()
{ {
var t2 = _sqlserverFixture.SqlServer.DbFirst.GetTablesByDatabase(); var t2 = g.sqlserver.DbFirst.GetTablesByDatabase();
} }
} }

View File

@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>(); ISelect<Topic> select => g.sqlserver.Select<Topic>();
[Table(Name = "tb_topic")] [Table(Name = "tb_topic")]
class Topic class Topic

View File

@ -17,7 +17,7 @@ namespace FreeSql.Tests.SqlServerExpression
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>(); ISelect<Topic> select => g.sqlserver.Select<Topic>();
[Table(Name = "tb_topic111333")] [Table(Name = "tb_topic111333")]
class Topic class Topic

View File

@ -17,7 +17,7 @@ namespace FreeSql.Tests.SqlServerExpression
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>(); ISelect<Topic> select => g.sqlserver.Select<Topic>();
[Table(Name = "tb_topic")] [Table(Name = "tb_topic")]
class Topic class Topic

View File

@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
ISelect<TableAllType> select => _sqlserverFixture.SqlServer.Select<TableAllType>(); ISelect<TableAllType> select => g.sqlserver.Select<TableAllType>();
[Fact] [Fact]
public void Div() public void Div()

View File

@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>(); ISelect<Topic> select => g.sqlserver.Select<Topic>();
[Table(Name = "tb_topic")] [Table(Name = "tb_topic")]
class Topic class Topic
@ -56,7 +56,7 @@ namespace FreeSql.Tests.SqlServerExpression
{ {
var list = new List<object>(); var list = new List<object>();
list.Add(select.Where(a => a.Title.Equals("aaa")).ToList()); list.Add(select.Where(a => a.Title.Equals("aaa")).ToList());
list.Add(_sqlserverFixture.SqlServer.Select<TestEqualsGuid>().Where(a => a.id.Equals(Guid.Empty)).ToList()); list.Add(g.sqlserver.Select<TestEqualsGuid>().Where(a => a.id.Equals(Guid.Empty)).ToList());
} }
[Fact] [Fact]

View File

@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression
_sqlserverFixture = sqlserverFixture; _sqlserverFixture = sqlserverFixture;
} }
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>(); ISelect<Topic> select => g.sqlserver.Select<Topic>();
[Table(Name = "tb_topic")] [Table(Name = "tb_topic")]
class Topic class Topic

View File

@ -427,7 +427,7 @@ namespace FreeSql.Tests
[Fact] [Fact]
public void Test1() public void Test1()
{ {
g.sqlserver.Select<NewsArticle>();
g.sqlite.Update<Model1>(1).NoneParameter().Set(a => a.title, null).ExecuteAffrows(); g.sqlite.Update<Model1>(1).NoneParameter().Set(a => a.title, null).ExecuteAffrows();

View File

@ -168,6 +168,10 @@ namespace FreeSql.Tests
public void Test02() public void Test02()
{ {
var dbs = g.sqlserver.DbFirst.GetDatabases();
var tbs = g.sqlserver.DbFirst.GetTablesByDatabase("ds_shop");
var dicParamslist = g.sqlite.Select<SysModule>().Page(1, 10) var dicParamslist = g.sqlite.Select<SysModule>().Page(1, 10)
.Where("id > @id and id > @id2 and id > @id3", .Where("id > @id and id > @id2 and id > @id3",
new Dictionary<string, int> { ["id"] = 1, ["id2"] = 2, ["id3"] = 3 }) new Dictionary<string, int> { ["id"] = 1, ["id2"] = 2, ["id3"] = 3 })

View File

@ -2000,6 +2000,137 @@
<param name="parms"></param> <param name="parms"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{System.Data.Common.DbDataReader,System.Threading.Tasks.Task},System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
<summary>
查询若使用读写分离查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
</summary>
<param name="readerHander"></param>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{System.Data.Common.DbDataReader,System.Threading.Tasks.Task},System.String,System.Object)">
<summary>
查询ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 })
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
<summary>
查询
</summary>
<param name="cmdText"></param>
<param name="cmdParms"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.String,System.Object)">
<summary>
查询ExecuteArrayAsync("select * from user where age > @age", new { age = 25 })
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
<summary>
查询
</summary>
<param name="cmdText"></param>
<param name="cmdParms"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.String,System.Object)">
<summary>
查询ExecuteDataSetAsync("select * from user where age > @age; select 2", new { age = 25 })
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
<summary>
查询
</summary>
<param name="cmdText"></param>
<param name="cmdParms"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.String,System.Object)">
<summary>
查询ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 })
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
<summary>
在【主库】执行
</summary>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.String,System.Object)">
<summary>
在【主库】执行ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 })
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
<summary>
在【主库】执行
</summary>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.String,System.Object)">
<summary>
在【主库】执行ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 })
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``1(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
<summary>
执行SQL返回对象集合QueryAsync&lt;User&gt;("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 })
</summary>
<typeparam name="T"></typeparam>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``1(System.String,System.Object)">
<summary>
执行SQL返回对象集合QueryAsync&lt;User&gt;("select * from user where age > @age", new { age = 25 })
</summary>
<typeparam name="T"></typeparam>
<param name="cmdText"></param>
<param name="parms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``2(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
<summary>
执行SQL返回对象集合Query&lt;User&gt;("select * from user where age > @age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 })
</summary>
<typeparam name="T1"></typeparam>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``2(System.String,System.Object)">
<summary>
执行SQL返回对象集合Query&lt;User&gt;("select * from user where age > @age; select * from address", new { age = 25 })
</summary>
<typeparam name="T1"></typeparam>
<param name="cmdText"></param>
<param name="parms"></param>
<returns></returns>
</member>
<member name="P:FreeSql.IAop.ParseExpression"> <member name="P:FreeSql.IAop.ParseExpression">
<summary> <summary>
可自定义解析表达式 可自定义解析表达式
@ -2710,159 +2841,3 @@
</member> </member>
</members> </members>
</doc> </doc>
</member>
<member name="M:System.Linq.Expressions.LambadaExpressionExtensions.Or``1(System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})">
<summary>
使用 or 拼接两个 lambda 表达式
</summary>
<returns></returns>
</member>
<member name="M:System.Linq.Expressions.LambadaExpressionExtensions.Or``1(System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Boolean,System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})">
<summary>
使用 or 拼接两个 lambda 表达式
</summary>
<typeparam name="T"></typeparam>
<param name="exp1"></param>
<param name="condition">true 时生效</param>
<param name="exp2"></param>
<returns></returns>
</member>
<member name="M:System.Linq.Expressions.LambadaExpressionExtensions.Not``1(System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Boolean)">
<summary>
将 lambda 表达式取反
</summary>
<typeparam name="T"></typeparam>
<param name="exp"></param>
<param name="condition">true 时生效</param>
<returns></returns>
</member>
<member name="M:FreeUtil.NewMongodbId">
<summary>
生成类似Mongodb的ObjectId有序、不重复Guid
</summary>
<returns></returns>
</member>
<member name="M:IFreeSql.Insert``1">
<summary>
插入数据
</summary>
<typeparam name="T1"></typeparam>
<returns></returns>
</member>
<member name="M:IFreeSql.Insert``1(``0)">
<summary>
插入数据,传入实体
</summary>
<typeparam name="T1"></typeparam>
<param name="source"></param>
<returns></returns>
</member>
<member name="M:IFreeSql.Insert``1(``0[])">
<summary>
插入数据,传入实体数组
</summary>
<typeparam name="T1"></typeparam>
<param name="source"></param>
<returns></returns>
</member>
<member name="M:IFreeSql.Insert``1(System.Collections.Generic.List{``0})">
<summary>
插入数据,传入实体集合
</summary>
<typeparam name="T1"></typeparam>
<param name="source"></param>
<returns></returns>
</member>
<member name="M:IFreeSql.Insert``1(System.Collections.Generic.IEnumerable{``0})">
<summary>
插入数据,传入实体集合
</summary>
<typeparam name="T1"></typeparam>
<param name="source"></param>
<returns></returns>
</member>
<member name="M:IFreeSql.Update``1">
<summary>
修改数据
</summary>
<typeparam name="T1"></typeparam>
<returns></returns>
</member>
<member name="M:IFreeSql.Update``1(System.Object)">
<summary>
修改数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary>
<typeparam name="T1"></typeparam>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
<returns></returns>
</member>
<member name="M:IFreeSql.Select``1">
<summary>
查询数据
</summary>
<typeparam name="T1"></typeparam>
<returns></returns>
</member>
<member name="M:IFreeSql.Select``1(System.Object)">
<summary>
查询数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary>
<typeparam name="T1"></typeparam>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
<returns></returns>
</member>
<member name="M:IFreeSql.Delete``1">
<summary>
删除数据
</summary>
<typeparam name="T1"></typeparam>
<returns></returns>
</member>
<member name="M:IFreeSql.Delete``1(System.Object)">
<summary>
删除数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary>
<typeparam name="T1"></typeparam>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
<returns></returns>
</member>
<member name="M:IFreeSql.Transaction(System.Action)">
<summary>
开启事务不支持异步60秒未执行完将自动提交
</summary>
<param name="handler">事务体 () => {}</param>
</member>
<member name="M:IFreeSql.Transaction(System.Action,System.TimeSpan)">
<summary>
开启事务(不支持异步)
</summary>
<param name="handler">事务体 () => {}</param>
<param name="timeout">超时,未执行完将自动提交</param>
</member>
<member name="P:IFreeSql.Ado">
<summary>
数据库访问对象
</summary>
</member>
<member name="P:IFreeSql.Aop">
<summary>
所有拦截方法都在这里
</summary>
</member>
<member name="P:IFreeSql.CodeFirst">
<summary>
CodeFirst 模式开发相关方法
</summary>
</member>
<member name="P:IFreeSql.DbFirst">
<summary>
DbFirst 模式开发相关方法
</summary>
</member>
<member name="P:IFreeSql.GlobalFilter">
<summary>
全局过滤设置,可默认附加为 Select/Update/Delete 条件
</summary>
</member>
</members>
</doc>

View File

@ -338,7 +338,7 @@ namespace FreeSql.Internal.CommonProvider
} }
#endregion #endregion
protected int RawExecuteAffrows() protected virtual int RawExecuteAffrows()
{ {
var sql = ToSql(); var sql = ToSql();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
@ -412,7 +412,9 @@ namespace FreeSql.Internal.CommonProvider
return this; 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; if (_source == null || _source.Any() == false) return null;
var sb = new StringBuilder(); var sb = new StringBuilder();
@ -427,14 +429,15 @@ namespace FreeSql.Internal.CommonProvider
sb.Append(_commonUtils.QuoteSqlName(col.Attribute.Name)); sb.Append(_commonUtils.QuoteSqlName(col.Attribute.Name));
++colidx; ++colidx;
} }
sb.Append(") VALUES"); sb.Append(") ");
if (isValues) sb.Append(isValues ? "VALUES" : "SELECT ");
_params = _noneParameter ? new DbParameter[0] : new DbParameter[colidx * _source.Count]; _params = _noneParameter ? new DbParameter[0] : new DbParameter[colidx * _source.Count];
var specialParams = new List<DbParameter>(); var specialParams = new List<DbParameter>();
var didx = 0; var didx = 0;
foreach (var d in _source) foreach (var d in _source)
{ {
if (didx > 0) sb.Append(", "); if (didx > 0) sb.Append(isValues ? ", " : " \r\nUNION ALL\r\n ");
sb.Append("("); sb.Append(isValues ? "(" : "SELECT ");
var colidx2 = 0; var colidx2 = 0;
foreach (var col in _table.Columns.Values) foreach (var col in _table.Columns.Values)
{ {
@ -452,7 +455,7 @@ namespace FreeSql.Internal.CommonProvider
} }
++colidx2; ++colidx2;
} }
sb.Append(")"); if (isValues) sb.Append(")");
++didx; ++didx;
} }
if (_noneParameter && specialParams.Any()) if (_noneParameter && specialParams.Any())

View File

@ -174,7 +174,7 @@ namespace FreeSql.Internal.CommonProvider
return ret; return ret;
} }
async protected Task<int> RawExecuteAffrowsAsync() async protected virtual Task<int> RawExecuteAffrowsAsync()
{ {
var sql = ToSql(); var sql = ToSql();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);

View File

@ -21,9 +21,34 @@ namespace FreeSql.Odbc.SqlServer
public override long ExecuteIdentity() => base.SplitExecuteIdentity(1000, 2100); public override long ExecuteIdentity() => base.SplitExecuteIdentity(1000, 2100);
public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(1000, 2100); public override List<T1> 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() 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; if (string.IsNullOrEmpty(sql)) return 0;
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();"); sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
@ -47,10 +72,10 @@ namespace FreeSql.Odbc.SqlServer
} }
return ret; return ret;
} }
protected override List<T1> RawExecuteInserted() protected override List<T1> 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<T1>(); if (string.IsNullOrEmpty(sql)) return new List<T1>();
var sb = new StringBuilder(); var sb = new StringBuilder();
@ -63,10 +88,20 @@ namespace FreeSql.Odbc.SqlServer
++colidx; ++colidx;
} }
var validx = sql.IndexOf(") VALUES"); if (versionGreaterThan10)
if (validx == -1) throw new ArgumentException("找不到 VALUES"); {
sb.Insert(0, sql.Substring(0, validx + 1)); var validx = sql.IndexOf(") VALUES");
sb.Append(sql.Substring(validx + 1)); 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(); sql = sb.ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
@ -96,10 +131,34 @@ namespace FreeSql.Odbc.SqlServer
public override Task<long> ExecuteIdentityAsync() => base.SplitExecuteIdentityAsync(1000, 2100); public override Task<long> ExecuteIdentityAsync() => base.SplitExecuteIdentityAsync(1000, 2100);
public override Task<List<T1>> ExecuteInsertedAsync() => base.SplitExecuteInsertedAsync(1000, 2100); public override Task<List<T1>> ExecuteInsertedAsync() => base.SplitExecuteInsertedAsync(1000, 2100);
async protected override Task<int> 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<long> RawExecuteIdentityAsync() async protected override Task<long> 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; if (string.IsNullOrEmpty(sql)) return 0;
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();"); sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
@ -125,7 +184,8 @@ namespace FreeSql.Odbc.SqlServer
} }
async protected override Task<List<T1>> RawExecuteInsertedAsync() async protected override Task<List<T1>> 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<T1>(); if (string.IsNullOrEmpty(sql)) return new List<T1>();
var sb = new StringBuilder(); var sb = new StringBuilder();
@ -138,10 +198,20 @@ namespace FreeSql.Odbc.SqlServer
++colidx; ++colidx;
} }
var validx = sql.IndexOf(") VALUES"); if (versionGreaterThan10)
if (validx == -1) throw new ArgumentException("找不到 VALUES"); {
sb.Insert(0, sql.Substring(0, validx + 1)); var validx = sql.IndexOf(") VALUES");
sb.Append(sql.Substring(validx + 1)); 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(); sql = sb.ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);

View File

@ -106,27 +106,29 @@ ELSE
protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects) protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects)
{ {
var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5)); var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5));
var database = conn.Value.Database; string database = null;
Func<string, string, object> 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();
try try
{ {
database = conn.Value.Database;
Func<string, string, object> 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) foreach (var obj in objects)
{ {
if (sb.Length > 0) sb.Append("\r\n"); if (sb.Length > 0) sb.Append("\r\n");
@ -243,10 +245,9 @@ a.name 'Column'
else '' end as 'SqlType' else '' end as 'SqlType'
,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable' ,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable'
,case when a.is_identity = 1 then '1' else '0' end 'IsIdentity' ,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 from sys.columns a
inner join sys.types b on b.user_type_id = a.user_type_id 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.tables d on d.object_id = a.object_id
left join sys.schemas e on e.schema_id = d.schema_id left join sys.schemas e on e.schema_id = d.schema_id
where a.object_id in (object_id(N'[{1}].[{2}]')); where a.object_id in (object_id(N'[{1}].[{2}]'));
@ -377,7 +378,8 @@ use " + database, tboldname ?? tbname);
if (string.IsNullOrEmpty(tbcol.Comment) == false) if (string.IsNullOrEmpty(tbcol.Comment) == false)
AddOrUpdateMS_Description(sb, tbname[1], $"FreeSqlTmp_{tbname[2]}", tbcol.Attribute.Name, tbcol.Comment); 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"); 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("IF EXISTS(SELECT 1 FROM ").Append(tablename).Append(")\r\n");
sb.Append("\tEXEC('INSERT INTO ").Append(tmptablename).Append(" ("); sb.Append("\tEXEC('INSERT INTO ").Append(tmptablename).Append(" (");
@ -426,7 +428,8 @@ use " + database, tboldname ?? tbname);
{ {
try try
{ {
conn.Value.ChangeDatabase(database); if (string.IsNullOrEmpty(database) == false)
conn.Value.ChangeDatabase(database);
_orm.Ado.MasterPool.Return(conn); _orm.Ado.MasterPool.Return(conn);
} }
catch catch

View File

@ -130,32 +130,29 @@ select
a.Object_id a.Object_id
,b.name 'Owner' ,b.name 'Owner'
,a.name 'Name' ,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 ,'TABLE' type
from sys.tables a from sys.tables a
inner join sys.schemas b on b.schema_id = a.schema_id 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') where not(b.name = 'dbo' and a.name = 'sysdiagrams')
union all union all
select select
a.Object_id a.Object_id
,b.name 'Owner' ,b.name 'Owner'
,a.name 'Name' ,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 ,'VIEW' type
from sys.views a from sys.views a
inner join sys.schemas b on b.schema_id = a.schema_id 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 union all
select select
a.Object_id a.Object_id
,b.name 'Owner' ,b.name 'Owner'
,a.name 'Name' ,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 ,'StoreProcedure' type
from sys.procedures a from sys.procedures a
inner join sys.schemas b on b.schema_id = a.schema_id 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 where a.type = 'P' and charindex('diagram', a.name) = 0
order by type desc, b.name, a.name 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 + ')' 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) + ')' when b.name in ('Numeric', 'Decimal') then '(' + cast(a.precision as varchar) + ',' + cast(a.scale as varchar) + ')'
else '' end as 'SqlType' 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 {0} a
inner join sys.types b on b.user_type_id = a.user_type_id 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.tables d on d.object_id = a.object_id
left join sys.schemas e on e.schema_id = d.schema_id left join sys.schemas e on e.schema_id = d.schema_id
where {1} where {1}
@ -257,8 +253,8 @@ from sys.columns", loc8.ToString().Replace("a.table_name", "a.object_id"));
{ {
sql += "union all" + sql += "union all" +
string.Format(tsql_place.Replace( 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", "select value from sys.extended_properties where major_id = a.object_id AND 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.parameter_id"), @"
,cast(0 as bit) 'IsNullable' ,cast(0 as bit) 'IsNullable'
,a.is_output 'IsIdentity' ,a.is_output 'IsIdentity'
from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id")); from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"));

View File

@ -42,7 +42,7 @@ namespace FreeSql.Odbc.SqlServer
{ {
try 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 catch
{ {

View File

@ -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<DbParameter> _params, string parameterName, Type type, object value) public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, Type type, object value)
{ {

View File

@ -4,6 +4,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Data.Common; using System.Data.Common;
using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -21,9 +22,34 @@ namespace FreeSql.SqlServer.Curd
public override long ExecuteIdentity() => base.SplitExecuteIdentity(1000, 2100); public override long ExecuteIdentity() => base.SplitExecuteIdentity(1000, 2100);
public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(1000, 2100); public override List<T1> 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() 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; if (string.IsNullOrEmpty(sql)) return 0;
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();"); sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
@ -49,7 +75,8 @@ namespace FreeSql.SqlServer.Curd
} }
protected override List<T1> RawExecuteInserted() protected override List<T1> 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<T1>(); if (string.IsNullOrEmpty(sql)) return new List<T1>();
var sb = new StringBuilder(); var sb = new StringBuilder();
@ -62,10 +89,20 @@ namespace FreeSql.SqlServer.Curd
++colidx; ++colidx;
} }
var validx = sql.IndexOf(") VALUES"); if (versionGreaterThan10)
if (validx == -1) throw new ArgumentException("找不到 VALUES"); {
sb.Insert(0, sql.Substring(0, validx + 1)); var validx = sql.IndexOf(") VALUES");
sb.Append(sql.Substring(validx + 1)); 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(); sql = sb.ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
@ -95,9 +132,34 @@ namespace FreeSql.SqlServer.Curd
public override Task<long> ExecuteIdentityAsync() => base.SplitExecuteIdentityAsync(1000, 2100); public override Task<long> ExecuteIdentityAsync() => base.SplitExecuteIdentityAsync(1000, 2100);
public override Task<List<T1>> ExecuteInsertedAsync() => base.SplitExecuteInsertedAsync(1000, 2100); public override Task<List<T1>> ExecuteInsertedAsync() => base.SplitExecuteInsertedAsync(1000, 2100);
async protected override Task<int> 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<long> RawExecuteIdentityAsync() async protected override Task<long> 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; if (string.IsNullOrEmpty(sql)) return 0;
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();"); sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
@ -123,7 +185,8 @@ namespace FreeSql.SqlServer.Curd
} }
async protected override Task<List<T1>> RawExecuteInsertedAsync() async protected override Task<List<T1>> 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<T1>(); if (string.IsNullOrEmpty(sql)) return new List<T1>();
var sb = new StringBuilder(); var sb = new StringBuilder();
@ -136,10 +199,20 @@ namespace FreeSql.SqlServer.Curd
++colidx; ++colidx;
} }
var validx = sql.IndexOf(") VALUES"); if (versionGreaterThan10)
if (validx == -1) throw new ArgumentException("找不到 VALUES"); {
sb.Insert(0, sql.Substring(0, validx + 1)); var validx = sql.IndexOf(") VALUES");
sb.Append(sql.Substring(validx + 1)); 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(); sql = sb.ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params); var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);

View File

@ -109,27 +109,29 @@ ELSE
protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects) protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects)
{ {
var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5)); var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5));
var database = conn.Value.Database; string database = null;
Func<string, string, object> 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();
try try
{ {
database = conn.Value.Database;
Func<string, string, object> 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) foreach (var obj in objects)
{ {
if (sb.Length > 0) sb.Append("\r\n"); if (sb.Length > 0) sb.Append("\r\n");
@ -246,10 +248,9 @@ a.name 'Column'
else '' end as 'SqlType' else '' end as 'SqlType'
,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable' ,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable'
,case when a.is_identity = 1 then '1' else '0' end 'IsIdentity' ,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 from sys.columns a
inner join sys.types b on b.user_type_id = a.user_type_id 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.tables d on d.object_id = a.object_id
left join sys.schemas e on e.schema_id = d.schema_id left join sys.schemas e on e.schema_id = d.schema_id
where a.object_id in (object_id(N'[{1}].[{2}]')); where a.object_id in (object_id(N'[{1}].[{2}]'));
@ -380,7 +381,8 @@ use " + database, tboldname ?? tbname);
if (string.IsNullOrEmpty(tbcol.Comment) == false) if (string.IsNullOrEmpty(tbcol.Comment) == false)
AddOrUpdateMS_Description(sb, tbname[1], $"FreeSqlTmp_{tbname[2]}", tbcol.Attribute.Name, tbcol.Comment); 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"); 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("IF EXISTS(SELECT 1 FROM ").Append(tablename).Append(")\r\n");
sb.Append("\tEXEC('INSERT INTO ").Append(tmptablename).Append(" ("); sb.Append("\tEXEC('INSERT INTO ").Append(tmptablename).Append(" (");
@ -429,7 +431,8 @@ use " + database, tboldname ?? tbname);
{ {
try try
{ {
conn.Value.ChangeDatabase(database); if (string.IsNullOrEmpty(database) == false)
conn.Value.ChangeDatabase(database);
_orm.Ado.MasterPool.Return(conn); _orm.Ado.MasterPool.Return(conn);
} }
catch catch

View File

@ -133,32 +133,29 @@ select
a.Object_id a.Object_id
,b.name 'Owner' ,b.name 'Owner'
,a.name 'Name' ,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 ,'TABLE' type
from sys.tables a from sys.tables a
inner join sys.schemas b on b.schema_id = a.schema_id 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') where not(b.name = 'dbo' and a.name = 'sysdiagrams')
union all union all
select select
a.Object_id a.Object_id
,b.name 'Owner' ,b.name 'Owner'
,a.name 'Name' ,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 ,'VIEW' type
from sys.views a from sys.views a
inner join sys.schemas b on b.schema_id = a.schema_id 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 union all
select select
a.Object_id a.Object_id
,b.name 'Owner' ,b.name 'Owner'
,a.name 'Name' ,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 ,'StoreProcedure' type
from sys.procedures a from sys.procedures a
inner join sys.schemas b on b.schema_id = a.schema_id 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 where a.type = 'P' and charindex('diagram', a.name) = 0
order by type desc, b.name, a.name 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 + ')' 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) + ')' when b.name in ('Numeric', 'Decimal') then '(' + cast(a.precision as varchar) + ',' + cast(a.scale as varchar) + ')'
else '' end as 'SqlType' 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 {0} a
inner join sys.types b on b.user_type_id = a.user_type_id 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.tables d on d.object_id = a.object_id
left join sys.schemas e on e.schema_id = d.schema_id left join sys.schemas e on e.schema_id = d.schema_id
where {1} where {1}
@ -260,8 +256,8 @@ from sys.columns", loc8.ToString().Replace("a.table_name", "a.object_id"));
{ {
sql += "union all" + sql += "union all" +
string.Format(tsql_place.Replace( 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", "select value from sys.extended_properties where major_id = a.object_id AND 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.parameter_id"), @"
,cast(0 as bit) 'IsNullable' ,cast(0 as bit) 'IsNullable'
,a.is_output 'IsIdentity' ,a.is_output 'IsIdentity'
from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id")); from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"));

View File

@ -43,7 +43,7 @@ namespace FreeSql.SqlServer
{ {
try 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 catch
{ {

View File

@ -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<DbParameter> _params, string parameterName, Type type, object value) public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, Type type, object value)
{ {