mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 修复 SqlServer DbFirst、CodeFirst 查询实体表的列信息错误,当设置了表/列多个扩展属性时发生;
- 修复 SqlServer2005 CodeFirst 迁移时,不支持 SET (LOCK_ESCALATION TABLE) 的错误(已做适配); - 修复 SqlServer2005 批量插入SQL语法错误,不支持 Values(),()(已做适配); - 完善 SqlServer2005 环境跑通了所有单元测试;
This commit is contained in:
parent
acd406164a
commit
d6010b4b51
BIN
Extensions/FreeSql.Extensions.BaseEntity/BaseEntity 纯净版源码.zip
Normal file
BIN
Extensions/FreeSql.Extensions.BaseEntity/BaseEntity 纯净版源码.zip
Normal file
Binary file not shown.
@ -20,9 +20,9 @@ namespace FreeSql.Tests.DataAnnotations
|
||||
[Fact]
|
||||
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)]
|
||||
class ModelDisableSyncStructure
|
||||
@ -39,7 +39,7 @@ namespace FreeSql.Tests.DataAnnotations
|
||||
[Fact]
|
||||
public void Fluent()
|
||||
{
|
||||
_sqlserverFixture.SqlServer.CodeFirst
|
||||
g.sqlserver.CodeFirst
|
||||
//.ConfigEntity<TestFluenttb1>(a => {
|
||||
// a.Name("xxdkdkdk1");
|
||||
// a.Property(b => b.Id).Name("Id22").IsIdentity(true);
|
||||
@ -61,21 +61,21 @@ namespace FreeSql.Tests.DataAnnotations
|
||||
})
|
||||
;
|
||||
|
||||
var ddl1 = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<TestFluenttb1>();
|
||||
var ddl2 = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<TestFluenttb2>();
|
||||
var ddl1 = g.sqlserver.CodeFirst.GetComparisonDDLStatements<TestFluenttb1>();
|
||||
var ddl2 = g.sqlserver.CodeFirst.GetComparisonDDLStatements<TestFluenttb2>();
|
||||
|
||||
var t1id = _sqlserverFixture.SqlServer.Insert<TestFluenttb1>().AppendData(new TestFluenttb1 { }).ExecuteIdentity();
|
||||
var t1 = _sqlserverFixture.SqlServer.Select<TestFluenttb1>(t1id).ToOne();
|
||||
var t1id = g.sqlserver.Insert<TestFluenttb1>().AppendData(new TestFluenttb1 { }).ExecuteIdentity();
|
||||
var t1 = g.sqlserver.Select<TestFluenttb1>(t1id).ToOne();
|
||||
|
||||
var t2lastId = _sqlserverFixture.SqlServer.Select<TestFluenttb2>().Max(a => a.Id);
|
||||
var t2affrows = _sqlserverFixture.SqlServer.Insert<TestFluenttb2>().AppendData(new TestFluenttb2 { Id = t2lastId + 1 }).ExecuteAffrows();
|
||||
var t2 = _sqlserverFixture.SqlServer.Select<TestFluenttb2>(t2lastId + 1).ToOne();
|
||||
var t2lastId = g.sqlserver.Select<TestFluenttb2>().Max(a => a.Id);
|
||||
var t2affrows = g.sqlserver.Insert<TestFluenttb2>().AppendData(new TestFluenttb2 { Id = t2lastId + 1 }).ExecuteAffrows();
|
||||
var t2 = g.sqlserver.Select<TestFluenttb2>(t2lastId + 1).ToOne();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GroupPrimaryKey()
|
||||
{
|
||||
_sqlserverFixture.SqlServer.CodeFirst.SyncStructure<TestgroupkeyTb>();
|
||||
g.sqlserver.CodeFirst.SyncStructure<TestgroupkeyTb>();
|
||||
g.mysql.CodeFirst.SyncStructure<TestgroupkeyTb>();
|
||||
g.pgsql.CodeFirst.SyncStructure<TestgroupkeyTb>();
|
||||
g.sqlite.CodeFirst.SyncStructure<TestgroupkeyTb>();
|
||||
@ -114,9 +114,9 @@ namespace FreeSql.Tests.DataAnnotations
|
||||
public void IsIgnore()
|
||||
{
|
||||
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.Equal(item.id, find.id);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
_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")]
|
||||
class Topic
|
||||
@ -33,17 +33,17 @@ namespace FreeSql.Tests.SqlServer
|
||||
[Fact]
|
||||
public void Dywhere()
|
||||
{
|
||||
Assert.Null(_sqlserverFixture.SqlServer.Delete<Topic>().ToSql());
|
||||
var sql = _sqlserverFixture.SqlServer.Delete<Topic>(new[] { 1, 2 }).ToSql();
|
||||
Assert.Null(g.sqlserver.Delete<Topic>().ToSql());
|
||||
var sql = g.sqlserver.Delete<Topic>(new[] { 1, 2 }).ToSql();
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -70,18 +70,18 @@ namespace FreeSql.Tests.SqlServer
|
||||
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());
|
||||
}
|
||||
[Fact]
|
||||
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);
|
||||
|
||||
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(itemsInserted[0].Id, delete.Where(a => a.Id == itemsInserted[0].Id).ExecuteDeleted()[0].Id);
|
||||
@ -90,17 +90,17 @@ namespace FreeSql.Tests.SqlServer
|
||||
[Fact]
|
||||
public void AsTable()
|
||||
{
|
||||
Assert.Null(_sqlserverFixture.SqlServer.Delete<Topic>().ToSql());
|
||||
var sql = _sqlserverFixture.SqlServer.Delete<Topic>(new[] { 1, 2 }).AsTable(a => "tb_topic22211AsTable").ToSql();
|
||||
Assert.Null(g.sqlserver.Delete<Topic>().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);
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
_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")]
|
||||
class Topic
|
||||
@ -75,12 +75,12 @@ namespace FreeSql.Tests.SqlServer
|
||||
sql = insert.AppendData(items).IgnoreColumns(a => new { a.Title, a.CreateTime, a.TypeGuid }).ToSql();
|
||||
Assert.Equal("INSERT INTO [tb_topic]([Clicks]) VALUES(@Clicks_0), (@Clicks_1), (@Clicks_2), (@Clicks_3), (@Clicks_4), (@Clicks_5), (@Clicks_6), (@Clicks_7), (@Clicks_8), (@Clicks_9)", sql);
|
||||
|
||||
_sqlserverFixture.SqlServer.Delete<TopicIgnore>().Where("1=1").ExecuteAffrows();
|
||||
g.sqlserver.Delete<TopicIgnore>().Where("1=1").ExecuteAffrows();
|
||||
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 });
|
||||
_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, _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")]
|
||||
class TopicIgnore
|
||||
@ -98,33 +98,33 @@ namespace FreeSql.Tests.SqlServer
|
||||
for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100, CreateTime = DateTime.Now });
|
||||
|
||||
Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows());
|
||||
Assert.Equal(10, insert.AppendData(items).ExecuteAffrows());
|
||||
Assert.Equal(10, insert.AppendData(items).NoneParameter().ExecuteAffrows());
|
||||
|
||||
//items = Enumerable.Range(0, 9989).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList();
|
||||
//Assert.Equal(9989, _sqlserverFixture.SqlServer.Insert<Topic>(items).ExecuteAffrows());
|
||||
//Assert.Equal(9989, g.sqlserver.Insert<Topic>(items).ExecuteAffrows());
|
||||
|
||||
//var bttype = new TestBetchInsertType { title = "testbttitle1" };
|
||||
//bttype.id = (int)_sqlserverFixture.SqlServer.Insert(bttype).ExecuteIdentity();
|
||||
//bttype.id = (int)g.sqlserver.Insert(bttype).ExecuteIdentity();
|
||||
//Assert.True(bttype.id > 0);
|
||||
//var bttopic = Enumerable.Range(0, 10000).Select(a => new TestBetchInsertTopic { TypeId = bttype.id, Text = $"testtopic{a}" }).ToArray();
|
||||
//Assert.Equal(bttopic.Length, _sqlserverFixture.SqlServer.Insert<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.id = (int)_sqlserverFixture.SqlServer.Insert(bttype).ExecuteIdentity();
|
||||
// bttype.id = (int)g.sqlserver.Insert(bttype).ExecuteIdentity();
|
||||
// Assert.True(bttype.id > 0);
|
||||
// bttopic = Enumerable.Range(0, 10000).Select(a => new TestBetchInsertTopic { TypeId = bttype.id, Text = $"transaction_testtopic{a}" }).ToArray();
|
||||
// Assert.Equal(bttopic.Length, _sqlserverFixture.SqlServer.Insert<TestBetchInsertTopic>(bttopic).ExecuteAffrows());
|
||||
// Assert.Equal(bttopic.Length, g.sqlserver.Insert<TestBetchInsertTopic>(bttopic).ExecuteAffrows());
|
||||
//});
|
||||
|
||||
_sqlserverFixture.SqlServer.Transaction(() =>
|
||||
g.sqlserver.Transaction(() =>
|
||||
{
|
||||
var order = new AdjustPriceOrder { };
|
||||
order.Id = (int)_sqlserverFixture.SqlServer.Insert(order).NoneParameter().ExecuteIdentity();
|
||||
order.Id = (int)g.sqlserver.Insert(order).NoneParameter().ExecuteIdentity();
|
||||
Assert.True(order.Id > 0);
|
||||
var detail = Enumerable.Range(0, 10000).Select(a => new AdjustPriceDetail { Remark = $"transaction_testdetail{a}" }).ToArray();
|
||||
Assert.Equal(detail.Length, _sqlserverFixture.SqlServer.Insert<AdjustPriceDetail>(detail).NoneParameter().ExecuteAffrows());
|
||||
Assert.Equal(detail.Length, g.sqlserver.Insert<AdjustPriceDetail>(detail).NoneParameter().ExecuteAffrows());
|
||||
});
|
||||
}
|
||||
class TestBetchInsertType {
|
||||
@ -149,7 +149,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
|
||||
//items = Enumerable.Range(0, 9999).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList();
|
||||
//var lastId = g.sqlite.Select<Topic>().Max(a => a.Id);
|
||||
//Assert.NotEqual(lastId, _sqlserverFixture.SqlServer.Insert<Topic>(items).ExecuteIdentity());
|
||||
//Assert.NotEqual(lastId, g.sqlserver.Insert<Topic>(items).ExecuteIdentity());
|
||||
}
|
||||
[Fact]
|
||||
public void ExecuteInserted()
|
||||
@ -160,7 +160,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
var items2 = insert.AppendData(items).ExecuteInserted();
|
||||
|
||||
items = Enumerable.Range(0, 90).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList();
|
||||
var itemsInserted = _sqlserverFixture.SqlServer.Insert<Topic>(items).ExecuteInserted();
|
||||
var itemsInserted = g.sqlserver.Insert<Topic>(items).ExecuteInserted();
|
||||
Assert.Equal(items.First().Title, itemsInserted.First().Title);
|
||||
Assert.Equal(items.Last().Title, itemsInserted.Last().Title);
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
_sqlserverFixture = sqlserverFixture;
|
||||
}
|
||||
|
||||
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>();
|
||||
ISelect<Topic> select => g.sqlserver.Select<Topic>();
|
||||
|
||||
[Table(Name = "tb_topic22")]
|
||||
class Topic
|
||||
@ -83,7 +83,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
public void AsSelect()
|
||||
{
|
||||
//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
|
||||
//FROM [Tag] a
|
||||
//LEFT JOIN [Tag] a__Parent ON a__Parent.[Id] = a.[Parent_id]
|
||||
@ -91,7 +91,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
//WHERE (a__Parent__Parent.[Name] = '粤语')
|
||||
|
||||
//OneToMany
|
||||
var t1 = _sqlserverFixture.SqlServer.Select<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]
|
||||
//FROM [Tag] a
|
||||
//WHERE (exists(SELECT 1
|
||||
@ -101,7 +101,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
// limit 0,1))
|
||||
|
||||
//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]
|
||||
//FROM [Song] a
|
||||
//WHERE(exists(SELECT 1
|
||||
@ -116,11 +116,11 @@ namespace FreeSql.Tests.SqlServer
|
||||
[Fact]
|
||||
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)
|
||||
.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>();
|
||||
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.Equal(10, _sqlserverFixture.SqlServer.Insert<Topic>().AppendData(items).ExecuteInserted().Count);
|
||||
Assert.Single(g.sqlserver.Insert<Topic>().AppendData(items.First()).ExecuteInserted());
|
||||
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();
|
||||
//;
|
||||
//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 dt2 = select.Limit(10).ToDataTable("id, getdate()");
|
||||
@ -160,9 +160,9 @@ namespace FreeSql.Tests.SqlServer
|
||||
var testDto33 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto { });
|
||||
var testDto44 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto() { });
|
||||
|
||||
_sqlserverFixture.SqlServer.Insert<TestGuidIdToList>().AppendData(new TestGuidIdToList()).ExecuteAffrows();
|
||||
var testGuidId5 = _sqlserverFixture.SqlServer.Select<TestGuidIdToList>().ToList();
|
||||
var testGuidId6 = _sqlserverFixture.SqlServer.Select<TestGuidIdToList>().ToList(a => a.id);
|
||||
g.sqlserver.Insert<TestGuidIdToList>().AppendData(new TestGuidIdToList()).ExecuteAffrows();
|
||||
var testGuidId5 = g.sqlserver.Select<TestGuidIdToList>().ToList();
|
||||
var testGuidId6 = g.sqlserver.Select<TestGuidIdToList>().ToList(a => a.id);
|
||||
|
||||
var t11 = select.Where(a => a.Type.Name.Length > 0).ToList(true);
|
||||
var t21 = select.Where(a => a.Type.Parent.Name.Length > 0).ToList(true);
|
||||
@ -659,8 +659,8 @@ namespace FreeSql.Tests.SqlServer
|
||||
ccc3 = a.Max(a.Value.Item3.Id)
|
||||
});
|
||||
|
||||
var testpid1 = _sqlserverFixture.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();
|
||||
var testpid1 = g.sqlserver.Insert<TestTypeInfo>().AppendData(new TestTypeInfo { Name = "Name" + DateTime.Now.ToString("yyyyMMddHHmmss") }).ExecuteIdentity();
|
||||
g.sqlserver.Insert<TestInfo>().AppendData(new TestInfo { Title = "Title" + DateTime.Now.ToString("yyyyMMddHHmmss"), CreateTime = DateTime.Now, TypeGuid = (int)testpid1 }).ExecuteAffrows();
|
||||
|
||||
var aggsql1 = select
|
||||
.GroupBy(a => a.Title)
|
||||
@ -919,16 +919,16 @@ namespace FreeSql.Tests.SqlServer
|
||||
public void Include_OneToMany()
|
||||
{
|
||||
var model1 = new TestInclude_OneToManyModel1 { m1name = DateTime.Now.Second.ToString() };
|
||||
model1.id = (int)_sqlserverFixture.SqlServer.Insert(model1).ExecuteIdentity();
|
||||
model1.id = (int)g.sqlserver.Insert(model1).ExecuteIdentity();
|
||||
var model2 = new TestInclude_OneToManyModel2 { model2id = model1.id, m2setting = DateTime.Now.Second.ToString() };
|
||||
_sqlserverFixture.SqlServer.Insert(model2).ExecuteAffrows();
|
||||
g.sqlserver.Insert(model2).ExecuteAffrows();
|
||||
|
||||
var model3_1 = new TestInclude_OneToManyModel3 { model2111Idaaa = model1.id, title = "testmodel3__111" };
|
||||
model3_1.id = (int)_sqlserverFixture.SqlServer.Insert(model3_1).ExecuteIdentity();
|
||||
model3_1.id = (int)g.sqlserver.Insert(model3_1).ExecuteIdentity();
|
||||
var model3_2 = new TestInclude_OneToManyModel3 { model2111Idaaa = model1.id, title = "testmodel3__222" };
|
||||
model3_2.id = (int)_sqlserverFixture.SqlServer.Insert(model3_2).ExecuteIdentity();
|
||||
model3_2.id = (int)g.sqlserver.Insert(model3_2).ExecuteIdentity();
|
||||
var model3_3 = new TestInclude_OneToManyModel3 { model2111Idaaa = model1.id, title = "testmodel3__333" };
|
||||
model3_3.id = (int)_sqlserverFixture.SqlServer.Insert(model3_2).ExecuteIdentity();
|
||||
model3_3.id = (int)g.sqlserver.Insert(model3_2).ExecuteIdentity();
|
||||
|
||||
var model4s = new[] {
|
||||
new TestInclude_OneToManyModel4{ model3333Id333 = model3_1.id, title444 = "testmodel3_4__111" },
|
||||
@ -937,35 +937,35 @@ namespace FreeSql.Tests.SqlServer
|
||||
new TestInclude_OneToManyModel4{ model3333Id333 = model3_2.id, title444 = "testmodel3_4__222" },
|
||||
new TestInclude_OneToManyModel4{ model3333Id333 = model3_2.id, title444 = "testmodel3_4__333" }
|
||||
};
|
||||
Assert.Equal(5, _sqlserverFixture.SqlServer.Insert(model4s).ExecuteAffrows());
|
||||
Assert.Equal(5, g.sqlserver.Insert(model4s).ExecuteAffrows());
|
||||
|
||||
var t0 = _sqlserverFixture.SqlServer.Select<TestInclude_OneToManyModel2>()
|
||||
var t0 = g.sqlserver.Select<TestInclude_OneToManyModel2>()
|
||||
.IncludeMany(a => a.childs.Where(m3 => m3.model2111Idaaa == a.model2id))
|
||||
.Where(a => a.model2id <= model1.id)
|
||||
.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))
|
||||
.Where(a => a.id <= model1.id)
|
||||
.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),
|
||||
then => then.IncludeMany(m3 => m3.childs2.Where(m4 => m4.model3333Id333 == m3.id)))
|
||||
.Where(a => a.id <= model1.id)
|
||||
.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))
|
||||
.Where(a => a.model2id <= model1.id)
|
||||
.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))
|
||||
.Where(a => a.id <= model1.id)
|
||||
.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),
|
||||
then => then.IncludeMany(m3 => m3.childs2.Take(2).Where(m4 => m4.model3333Id333 == m3.id)))
|
||||
.Where(a => a.id <= model1.id)
|
||||
@ -1038,7 +1038,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
{
|
||||
string setting = "x";
|
||||
var model2 = new TestInclude_OneToManyModel22 { m2setting = DateTime.Now.Second.ToString(), aaa = "aaa" + DateTime.Now.Second, bbb = "bbb" + DateTime.Now.Second };
|
||||
model2.id = (int)_sqlserverFixture.SqlServer.Insert(model2).ExecuteIdentity();
|
||||
model2.id = (int)g.sqlserver.Insert(model2).ExecuteIdentity();
|
||||
|
||||
var model3s = new[]
|
||||
{
|
||||
@ -1046,18 +1046,18 @@ namespace FreeSql.Tests.SqlServer
|
||||
new TestInclude_OneToManyModel33 {model2Id = model2.id, title = "testmodel3__222", setting = setting},
|
||||
new TestInclude_OneToManyModel33 {model2Id = model2.id, title = "testmodel3__333", setting = setting}
|
||||
};
|
||||
Assert.Equal(3, _sqlserverFixture.SqlServer.Insert(model3s).ExecuteAffrows());
|
||||
Assert.Equal(3, g.sqlserver.Insert(model3s).ExecuteAffrows());
|
||||
|
||||
var model1 = new TestInclude_OneToManyModel11 { m1name = DateTime.Now.Second.ToString(), model2id = model2.id, m3setting = setting };
|
||||
model1.id = (int)_sqlserverFixture.SqlServer.Insert(model1).ExecuteIdentity();
|
||||
model1.id = (int)g.sqlserver.Insert(model1).ExecuteIdentity();
|
||||
|
||||
var t1 = _sqlserverFixture.SqlServer.Select<TestInclude_OneToManyModel11>()
|
||||
var t1 = g.sqlserver.Select<TestInclude_OneToManyModel11>()
|
||||
.LeftJoin(a => a.model2id == a.model2.id)
|
||||
.IncludeMany(a => a.model2.childs.Where(m3 => m3.model2Id == a.model2.id && m3.setting == a.m3setting))
|
||||
.Where(a => a.id <= model1.id)
|
||||
.ToList(true);
|
||||
|
||||
var t11 = _sqlserverFixture.SqlServer.Select<TestInclude_OneToManyModel11>()
|
||||
var t11 = g.sqlserver.Select<TestInclude_OneToManyModel11>()
|
||||
.LeftJoin(a => a.model2id == a.model2.id)
|
||||
.IncludeMany(a => a.model2.childs.Take(1).Where(m3 => m3.model2Id == a.model2.id && m3.setting == a.m3setting))
|
||||
.Where(a => a.id <= model1.id)
|
||||
@ -1086,56 +1086,56 @@ namespace FreeSql.Tests.SqlServer
|
||||
Ddd = DateTime.Now.Second,
|
||||
Name = "test_oneToChilds_01_中国"
|
||||
};
|
||||
tag1.Id = (int)_sqlserverFixture.SqlServer.Insert(tag1).ExecuteIdentity();
|
||||
tag1.Id = (int)g.sqlserver.Insert(tag1).ExecuteIdentity();
|
||||
var tag1_1 = new Tag
|
||||
{
|
||||
Parent_id = tag1.Id,
|
||||
Ddd = DateTime.Now.Second,
|
||||
Name = "test_oneToChilds_01_北京"
|
||||
};
|
||||
tag1_1.Id = (int)_sqlserverFixture.SqlServer.Insert(tag1_1).ExecuteIdentity();
|
||||
tag1_1.Id = (int)g.sqlserver.Insert(tag1_1).ExecuteIdentity();
|
||||
var tag1_2 = new Tag
|
||||
{
|
||||
Parent_id = tag1.Id,
|
||||
Ddd = DateTime.Now.Second,
|
||||
Name = "test_oneToChilds_01_上海"
|
||||
};
|
||||
tag1_2.Id = (int)_sqlserverFixture.SqlServer.Insert(tag1_2).ExecuteIdentity();
|
||||
tag1_2.Id = (int)g.sqlserver.Insert(tag1_2).ExecuteIdentity();
|
||||
|
||||
var tag2 = new Tag
|
||||
{
|
||||
Ddd = DateTime.Now.Second,
|
||||
Name = "test_oneToChilds_02_美国"
|
||||
};
|
||||
tag2.Id = (int)_sqlserverFixture.SqlServer.Insert(tag2).ExecuteIdentity();
|
||||
tag2.Id = (int)g.sqlserver.Insert(tag2).ExecuteIdentity();
|
||||
var tag2_1 = new Tag
|
||||
{
|
||||
Parent_id = tag2.Id,
|
||||
Ddd = DateTime.Now.Second,
|
||||
Name = "test_oneToChilds_02_纽约"
|
||||
};
|
||||
tag2_1.Id = (int)_sqlserverFixture.SqlServer.Insert(tag2_1).ExecuteIdentity();
|
||||
tag2_1.Id = (int)g.sqlserver.Insert(tag2_1).ExecuteIdentity();
|
||||
var tag2_2 = new Tag
|
||||
{
|
||||
Parent_id = tag2.Id,
|
||||
Ddd = DateTime.Now.Second,
|
||||
Name = "test_oneToChilds_02_华盛顿"
|
||||
};
|
||||
tag2_2.Id = (int)_sqlserverFixture.SqlServer.Insert(tag2_2).ExecuteIdentity();
|
||||
tag2_2.Id = (int)g.sqlserver.Insert(tag2_2).ExecuteIdentity();
|
||||
|
||||
var tags0 = _sqlserverFixture.SqlServer.Select<Tag>()
|
||||
var tags0 = g.sqlserver.Select<Tag>()
|
||||
.Include(a => a.Parent)
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags1 = _sqlserverFixture.SqlServer.Select<Tag>()
|
||||
var tags1 = g.sqlserver.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs)
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags2 = _sqlserverFixture.SqlServer.Select<Tag>()
|
||||
var tags2 = g.sqlserver.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags,
|
||||
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs))
|
||||
.Include(a => a.Parent)
|
||||
@ -1143,7 +1143,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags3 = _sqlserverFixture.SqlServer.Select<Tag>()
|
||||
var tags3 = g.sqlserver.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags,
|
||||
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs).IncludeMany(a => a.Tags))
|
||||
.Include(a => a.Parent)
|
||||
@ -1151,14 +1151,14 @@ namespace FreeSql.Tests.SqlServer
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags11 = _sqlserverFixture.SqlServer.Select<Tag>()
|
||||
var tags11 = g.sqlserver.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags.Take(1))
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags22 = _sqlserverFixture.SqlServer.Select<Tag>()
|
||||
var tags22 = g.sqlserver.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags.Take(1),
|
||||
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)))
|
||||
.Include(a => a.Parent)
|
||||
@ -1166,7 +1166,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags33 = _sqlserverFixture.SqlServer.Select<Tag>()
|
||||
var tags33 = g.sqlserver.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags.Take(1),
|
||||
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)).IncludeMany(a => a.Tags.Take(1)))
|
||||
.Include(a => a.Parent)
|
||||
@ -1237,19 +1237,19 @@ namespace FreeSql.Tests.SqlServer
|
||||
Ddd = DateTime.Now.Second,
|
||||
Name = "test_manytoMany_01_中国"
|
||||
};
|
||||
tag1.Id = (int)_sqlserverFixture.SqlServer.Insert(tag1).ExecuteIdentity();
|
||||
tag1.Id = (int)g.sqlserver.Insert(tag1).ExecuteIdentity();
|
||||
var tag2 = new Tag
|
||||
{
|
||||
Ddd = DateTime.Now.Second,
|
||||
Name = "test_manytoMany_02_美国"
|
||||
};
|
||||
tag2.Id = (int)_sqlserverFixture.SqlServer.Insert(tag2).ExecuteIdentity();
|
||||
tag2.Id = (int)g.sqlserver.Insert(tag2).ExecuteIdentity();
|
||||
var tag3 = new Tag
|
||||
{
|
||||
Ddd = DateTime.Now.Second,
|
||||
Name = "test_manytoMany_03_日本"
|
||||
};
|
||||
tag3.Id = (int)_sqlserverFixture.SqlServer.Insert(tag3).ExecuteIdentity();
|
||||
tag3.Id = (int)g.sqlserver.Insert(tag3).ExecuteIdentity();
|
||||
|
||||
var song1 = new Song
|
||||
{
|
||||
@ -1257,30 +1257,30 @@ namespace FreeSql.Tests.SqlServer
|
||||
Title = "test_manytoMany_01_我是中国人.mp3",
|
||||
Url = "http://ww.baidu.com/"
|
||||
};
|
||||
song1.Id = (int)_sqlserverFixture.SqlServer.Insert(song1).ExecuteIdentity();
|
||||
song1.Id = (int)g.sqlserver.Insert(song1).ExecuteIdentity();
|
||||
var song2 = new Song
|
||||
{
|
||||
Create_time = DateTime.Now,
|
||||
Title = "test_manytoMany_02_爱你一万年.mp3",
|
||||
Url = "http://ww.163.com/"
|
||||
};
|
||||
song2.Id = (int)_sqlserverFixture.SqlServer.Insert(song2).ExecuteIdentity();
|
||||
song2.Id = (int)g.sqlserver.Insert(song2).ExecuteIdentity();
|
||||
var song3 = new Song
|
||||
{
|
||||
Create_time = DateTime.Now,
|
||||
Title = "test_manytoMany_03_千年等一回.mp3",
|
||||
Url = "http://ww.sina.com/"
|
||||
};
|
||||
song3.Id = (int)_sqlserverFixture.SqlServer.Insert(song3).ExecuteIdentity();
|
||||
song3.Id = (int)g.sqlserver.Insert(song3).ExecuteIdentity();
|
||||
|
||||
_sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song1.Id, Tag_id = tag1.Id }).ExecuteAffrows();
|
||||
_sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song2.Id, Tag_id = tag1.Id }).ExecuteAffrows();
|
||||
_sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag1.Id }).ExecuteAffrows();
|
||||
_sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song1.Id, Tag_id = tag2.Id }).ExecuteAffrows();
|
||||
_sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag2.Id }).ExecuteAffrows();
|
||||
_sqlserverFixture.SqlServer.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag3.Id }).ExecuteAffrows();
|
||||
g.sqlserver.Insert(new Song_tag { Song_id = song1.Id, Tag_id = tag1.Id }).ExecuteAffrows();
|
||||
g.sqlserver.Insert(new Song_tag { Song_id = song2.Id, Tag_id = tag1.Id }).ExecuteAffrows();
|
||||
g.sqlserver.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag1.Id }).ExecuteAffrows();
|
||||
g.sqlserver.Insert(new Song_tag { Song_id = song1.Id, Tag_id = tag2.Id }).ExecuteAffrows();
|
||||
g.sqlserver.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag2.Id }).ExecuteAffrows();
|
||||
g.sqlserver.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag3.Id }).ExecuteAffrows();
|
||||
|
||||
var songs1 = _sqlserverFixture.SqlServer.Select<Song>()
|
||||
var songs1 = g.sqlserver.Select<Song>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
@ -1289,7 +1289,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
Assert.Equal(1, songs1[1].Tags.Count);
|
||||
Assert.Equal(3, songs1[2].Tags.Count);
|
||||
|
||||
var songs2 = _sqlserverFixture.SqlServer.Select<Song>()
|
||||
var songs2 = g.sqlserver.Select<Song>()
|
||||
.IncludeMany(a => a.Tags,
|
||||
then => then.IncludeMany(t => t.Songs))
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
@ -1299,14 +1299,14 @@ namespace FreeSql.Tests.SqlServer
|
||||
Assert.Equal(1, songs2[1].Tags.Count);
|
||||
Assert.Equal(3, songs2[2].Tags.Count);
|
||||
|
||||
var tags3 = _sqlserverFixture.SqlServer.Select<Song_tag>()
|
||||
var tags3 = g.sqlserver.Select<Song_tag>()
|
||||
.Include(a => a.Tag.Parent)
|
||||
.IncludeMany(a => a.Tag.Songs)
|
||||
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
|
||||
.ToList(true);
|
||||
|
||||
|
||||
var songs11 = _sqlserverFixture.SqlServer.Select<Song>()
|
||||
var songs11 = g.sqlserver.Select<Song>()
|
||||
.IncludeMany(a => a.Tags.Take(1))
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
@ -1315,7 +1315,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
Assert.Equal(1, songs11[1].Tags.Count);
|
||||
Assert.Equal(1, songs11[2].Tags.Count);
|
||||
|
||||
var songs22 = _sqlserverFixture.SqlServer.Select<Song>()
|
||||
var songs22 = g.sqlserver.Select<Song>()
|
||||
.IncludeMany(a => a.Tags.Take(1),
|
||||
then => then.IncludeMany(t => t.Songs.Take(1)))
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
@ -1325,7 +1325,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
Assert.Equal(1, songs22[1].Tags.Count);
|
||||
Assert.Equal(1, songs22[2].Tags.Count);
|
||||
|
||||
var tags33 = _sqlserverFixture.SqlServer.Select<Song_tag>()
|
||||
var tags33 = g.sqlserver.Select<Song_tag>()
|
||||
.Include(a => a.Tag.Parent)
|
||||
.IncludeMany(a => a.Tag.Songs.Take(1))
|
||||
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
|
||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
_sqlserverFixture = sqlserverFixture;
|
||||
}
|
||||
|
||||
IUpdate<Topic> update => _sqlserverFixture.SqlServer.Update<Topic>();
|
||||
IUpdate<Topic> update => g.sqlserver.Update<Topic>();
|
||||
|
||||
[Table(Name = "tb_topic")]
|
||||
class Topic
|
||||
@ -35,11 +35,11 @@ namespace FreeSql.Tests.SqlServer
|
||||
[Fact]
|
||||
public void Dywhere()
|
||||
{
|
||||
Assert.Null(_sqlserverFixture.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='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 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)", _sqlserverFixture.SqlServer.Update<Topic>(new { id = 1 }).SetRaw("title='test1'").ToSql());
|
||||
Assert.Null(g.sqlserver.Update<Topic>().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)", 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)", 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)", g.sqlserver.Update<Topic>(new { id = 1 }).SetRaw("title='test1'").ToSql());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -140,26 +140,26 @@ namespace FreeSql.Tests.SqlServer
|
||||
[Fact]
|
||||
public void ExecuteUpdated()
|
||||
{
|
||||
_sqlserverFixture.SqlServer.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
|
||||
_sqlserverFixture.SqlServer.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
|
||||
_sqlserverFixture.SqlServer.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
|
||||
_sqlserverFixture.SqlServer.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
|
||||
g.sqlserver.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
|
||||
g.sqlserver.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
|
||||
g.sqlserver.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
|
||||
g.sqlserver.Insert<Topic>().AppendData(new Topic()).ExecuteAffrows();
|
||||
|
||||
var items = _sqlserverFixture.SqlServer.Select<Topic>().Limit(2).ToList();
|
||||
_sqlserverFixture.SqlServer.Update<Topic>(items).SetRaw("title='test'").ExecuteUpdated();
|
||||
var items = g.sqlserver.Select<Topic>().Limit(2).ToList();
|
||||
g.sqlserver.Update<Topic>(items).SetRaw("title='test'").ExecuteUpdated();
|
||||
|
||||
items = _sqlserverFixture.SqlServer.Select<Topic>().Limit(2).ToList();
|
||||
var result = _sqlserverFixture.SqlServer.Update<Topic>(items).SetRaw("title='test'").ExecuteUpdatedAsync().Result;
|
||||
items = g.sqlserver.Select<Topic>().Limit(2).ToList();
|
||||
var result = g.sqlserver.Update<Topic>(items).SetRaw("title='test'").ExecuteUpdatedAsync().Result;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AsTable()
|
||||
{
|
||||
Assert.Null(_sqlserverFixture.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='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 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)", _sqlserverFixture.SqlServer.Update<Topic>(new { id = 1 }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql());
|
||||
Assert.Null(g.sqlserver.Update<Topic>().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)", 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)", 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)", g.sqlserver.Update<Topic>(new { id = 1 }).SetRaw("title='test1'").AsTable(a => "tb_topicAsTable").ToSql());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void Bool()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolNullableMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolNullableMap>().AppendData(item).ExecuteAffrows());
|
||||
var find = orm.Select<BoolNullableMap>().Where(a => a.id == item.id && a.tostring == true).First();
|
||||
|
@ -74,7 +74,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void BoolNullable()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new BoolMap { };
|
||||
Assert.Equal(1, orm.Insert<BoolMap>().AppendData(item).ExecuteAffrows());
|
||||
var find = orm.Select<BoolMap>().Where(a => a.id == item.id && a.tostring == true).First();
|
||||
|
@ -36,7 +36,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void EnumToString()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new EnumTestMap { };
|
||||
Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new EnumTestMap { };
|
||||
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();
|
||||
@ -154,7 +154,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void EnumToInt()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new EnumTestMap { };
|
||||
Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new EnumTestMap { };
|
||||
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();
|
||||
|
@ -50,7 +50,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void Enum1()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
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();
|
||||
@ -167,7 +167,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void BigInteger1()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
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();
|
||||
@ -284,7 +284,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void TimeSpan1()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
|
||||
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First();
|
||||
@ -325,7 +325,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void TimeSpanNullable()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
|
||||
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First();
|
||||
@ -380,7 +380,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void DateTime1()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
|
||||
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First();
|
||||
@ -421,7 +421,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void DateTimeNullable()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
|
||||
var find = orm.Select<ToStringMap>().Where(a => a.id == item.id).First();
|
||||
@ -477,7 +477,7 @@ namespace FreeSql.Tests.SqlServerMapType
|
||||
public void Guid1()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
Assert.Equal(1, orm.Insert<ToStringMap>().AppendData(item).ExecuteAffrows());
|
||||
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()
|
||||
{
|
||||
//insert
|
||||
var orm = _sqlserverFixture.SqlServer;
|
||||
var orm = g.sqlserver;
|
||||
var item = new ToStringMap { };
|
||||
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();
|
||||
|
@ -18,13 +18,13 @@ namespace FreeSql.Tests.SqlServer
|
||||
[Fact]
|
||||
public void Pool()
|
||||
{
|
||||
var t1 = _sqlserverFixture.SqlServer.Ado.MasterPool.StatisticsFullily;
|
||||
var t1 = g.sqlserver.Ado.MasterPool.StatisticsFullily;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SlavePools()
|
||||
{
|
||||
var t2 = _sqlserverFixture.SqlServer.Ado.SlavePools.Count;
|
||||
var t2 = g.sqlserver.Ado.SlavePools.Count;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -52,42 +52,42 @@ namespace FreeSql.Tests.SqlServer
|
||||
public void Query()
|
||||
{
|
||||
|
||||
//var tt1 = _sqlserverFixture.SqlServer.Select<xxx>()
|
||||
//var tt1 = g.sqlserver.Select<xxx>()
|
||||
// .LeftJoin(a => a.ParentId == a.Parent.Id)
|
||||
// .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)
|
||||
// .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)
|
||||
// .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)
|
||||
// .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 tnsql2 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 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 = 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 tn2 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 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 = 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));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void QueryMultipline()
|
||||
{
|
||||
var tnsql1 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id);
|
||||
var 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
|
||||
|
@ -9,32 +9,23 @@ using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.SqlServer
|
||||
{
|
||||
|
||||
[Collection("SqlServerCollection")]
|
||||
public class SqlServerCodeFirstTest
|
||||
{
|
||||
|
||||
SqlServerFixture _sqlserverFixture;
|
||||
|
||||
public SqlServerCodeFirstTest(SqlServerFixture sqlserverFixture)
|
||||
{
|
||||
_sqlserverFixture = sqlserverFixture;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void 中文表_字段()
|
||||
{
|
||||
var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<测试中文表>();
|
||||
_sqlserverFixture.SqlServer.CodeFirst.SyncStructure<测试中文表>();
|
||||
var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<测试中文表>();
|
||||
g.sqlserver.CodeFirst.SyncStructure<测试中文表>();
|
||||
|
||||
var item = new 测试中文表
|
||||
{
|
||||
标题 = "测试标题",
|
||||
创建时间 = DateTime.Now
|
||||
};
|
||||
Assert.Equal(1, _sqlserverFixture.SqlServer.Insert<测试中文表>().AppendData(item).ExecuteAffrows());
|
||||
Assert.Equal(1, g.sqlserver.Insert<测试中文表>().AppendData(item).ExecuteAffrows());
|
||||
Assert.NotEqual(Guid.Empty, item.编号);
|
||||
var item2 = _sqlserverFixture.SqlServer.Select<测试中文表>().Where(a => a.编号 == item.编号).First();
|
||||
var item2 = g.sqlserver.Select<测试中文表>().Where(a => a.编号 == item.编号).First();
|
||||
Assert.NotNull(item2);
|
||||
Assert.Equal(item.编号, item2.编号);
|
||||
Assert.Equal(item.标题, item2.标题);
|
||||
@ -53,8 +44,8 @@ namespace FreeSql.Tests.SqlServer
|
||||
[Fact]
|
||||
public void AddUniques()
|
||||
{
|
||||
var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||
_sqlserverFixture.SqlServer.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||
var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||
g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||
}
|
||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||
[Index("uk_phone", "phone", true)]
|
||||
@ -73,9 +64,9 @@ namespace FreeSql.Tests.SqlServer
|
||||
[Fact]
|
||||
public void AddField()
|
||||
{
|
||||
var sql = _sqlserverFixture.SqlServer.CodeFirst.GetComparisonDDLStatements<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")]
|
||||
@ -103,13 +94,13 @@ namespace FreeSql.Tests.SqlServer
|
||||
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>();
|
||||
ISelect<TableAllType> select => _sqlserverFixture.SqlServer.Select<TableAllType>();
|
||||
IInsert<TableAllType> insert => g.sqlserver.Insert<TableAllType>();
|
||||
ISelect<TableAllType> select => g.sqlserver.Select<TableAllType>();
|
||||
|
||||
[Fact]
|
||||
public void CurdAllField()
|
||||
|
@ -20,7 +20,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
public void GetDatabases()
|
||||
{
|
||||
|
||||
var t1 = _sqlserverFixture.SqlServer.DbFirst.GetDatabases();
|
||||
var t1 = g.sqlserver.DbFirst.GetDatabases();
|
||||
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@ namespace FreeSql.Tests.SqlServer
|
||||
public void GetTablesByDatabase()
|
||||
{
|
||||
|
||||
var t2 = _sqlserverFixture.SqlServer.DbFirst.GetTablesByDatabase();
|
||||
var t2 = g.sqlserver.DbFirst.GetTablesByDatabase();
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
||||
_sqlserverFixture = sqlserverFixture;
|
||||
}
|
||||
|
||||
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>();
|
||||
ISelect<Topic> select => g.sqlserver.Select<Topic>();
|
||||
|
||||
[Table(Name = "tb_topic")]
|
||||
class Topic
|
||||
|
@ -17,7 +17,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
||||
_sqlserverFixture = sqlserverFixture;
|
||||
}
|
||||
|
||||
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>();
|
||||
ISelect<Topic> select => g.sqlserver.Select<Topic>();
|
||||
|
||||
[Table(Name = "tb_topic111333")]
|
||||
class Topic
|
||||
|
@ -17,7 +17,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
||||
_sqlserverFixture = sqlserverFixture;
|
||||
}
|
||||
|
||||
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>();
|
||||
ISelect<Topic> select => g.sqlserver.Select<Topic>();
|
||||
|
||||
[Table(Name = "tb_topic")]
|
||||
class Topic
|
||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
||||
_sqlserverFixture = sqlserverFixture;
|
||||
}
|
||||
|
||||
ISelect<TableAllType> select => _sqlserverFixture.SqlServer.Select<TableAllType>();
|
||||
ISelect<TableAllType> select => g.sqlserver.Select<TableAllType>();
|
||||
|
||||
[Fact]
|
||||
public void Div()
|
||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
||||
_sqlserverFixture = sqlserverFixture;
|
||||
}
|
||||
|
||||
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>();
|
||||
ISelect<Topic> select => g.sqlserver.Select<Topic>();
|
||||
|
||||
[Table(Name = "tb_topic")]
|
||||
class Topic
|
||||
@ -56,7 +56,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
||||
{
|
||||
var list = new List<object>();
|
||||
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]
|
||||
|
@ -18,7 +18,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
||||
_sqlserverFixture = sqlserverFixture;
|
||||
}
|
||||
|
||||
ISelect<Topic> select => _sqlserverFixture.SqlServer.Select<Topic>();
|
||||
ISelect<Topic> select => g.sqlserver.Select<Topic>();
|
||||
|
||||
[Table(Name = "tb_topic")]
|
||||
class Topic
|
||||
|
@ -427,7 +427,7 @@ namespace FreeSql.Tests
|
||||
[Fact]
|
||||
public void Test1()
|
||||
{
|
||||
|
||||
g.sqlserver.Select<NewsArticle>();
|
||||
|
||||
g.sqlite.Update<Model1>(1).NoneParameter().Set(a => a.title, null).ExecuteAffrows();
|
||||
|
||||
|
@ -168,6 +168,10 @@ namespace FreeSql.Tests
|
||||
public void Test02()
|
||||
{
|
||||
|
||||
|
||||
var dbs = g.sqlserver.DbFirst.GetDatabases();
|
||||
var tbs = g.sqlserver.DbFirst.GetTablesByDatabase("ds_shop");
|
||||
|
||||
var dicParamslist = g.sqlite.Select<SysModule>().Page(1, 10)
|
||||
.Where("id > @id and id > @id2 and id > @id3",
|
||||
new Dictionary<string, int> { ["id"] = 1, ["id2"] = 2, ["id3"] = 3 })
|
||||
|
@ -2000,6 +2000,137 @@
|
||||
<param name="parms"></param>
|
||||
<returns></returns>
|
||||
</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<User>("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<User>("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<User>("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<User>("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">
|
||||
<summary>
|
||||
可自定义解析表达式
|
||||
@ -2710,159 +2841,3 @@
|
||||
</member>
|
||||
</members>
|
||||
</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>
|
||||
|
@ -338,7 +338,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
#endregion
|
||||
|
||||
protected int RawExecuteAffrows()
|
||||
protected virtual int RawExecuteAffrows()
|
||||
{
|
||||
var sql = ToSql();
|
||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||
@ -412,7 +412,9 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
public virtual string ToSql()
|
||||
public virtual string ToSql() => ToSqlValuesOrSelectUnionAll(true);
|
||||
|
||||
public string ToSqlValuesOrSelectUnionAll(bool isValues = true)
|
||||
{
|
||||
if (_source == null || _source.Any() == false) return null;
|
||||
var sb = new StringBuilder();
|
||||
@ -427,14 +429,15 @@ namespace FreeSql.Internal.CommonProvider
|
||||
sb.Append(_commonUtils.QuoteSqlName(col.Attribute.Name));
|
||||
++colidx;
|
||||
}
|
||||
sb.Append(") VALUES");
|
||||
sb.Append(") ");
|
||||
if (isValues) sb.Append(isValues ? "VALUES" : "SELECT ");
|
||||
_params = _noneParameter ? new DbParameter[0] : new DbParameter[colidx * _source.Count];
|
||||
var specialParams = new List<DbParameter>();
|
||||
var didx = 0;
|
||||
foreach (var d in _source)
|
||||
{
|
||||
if (didx > 0) sb.Append(", ");
|
||||
sb.Append("(");
|
||||
if (didx > 0) sb.Append(isValues ? ", " : " \r\nUNION ALL\r\n ");
|
||||
sb.Append(isValues ? "(" : "SELECT ");
|
||||
var colidx2 = 0;
|
||||
foreach (var col in _table.Columns.Values)
|
||||
{
|
||||
@ -452,7 +455,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
++colidx2;
|
||||
}
|
||||
sb.Append(")");
|
||||
if (isValues) sb.Append(")");
|
||||
++didx;
|
||||
}
|
||||
if (_noneParameter && specialParams.Any())
|
||||
|
@ -174,7 +174,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return ret;
|
||||
}
|
||||
|
||||
async protected Task<int> RawExecuteAffrowsAsync()
|
||||
async protected virtual Task<int> RawExecuteAffrowsAsync()
|
||||
{
|
||||
var sql = ToSql();
|
||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||
|
@ -21,9 +21,34 @@ namespace FreeSql.Odbc.SqlServer
|
||||
public override long ExecuteIdentity() => base.SplitExecuteIdentity(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()
|
||||
{
|
||||
var sql = this.ToSql();
|
||||
var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10;
|
||||
var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false);
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||
@ -47,10 +72,10 @@ namespace FreeSql.Odbc.SqlServer
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
protected override List<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>();
|
||||
|
||||
var sb = new StringBuilder();
|
||||
@ -63,10 +88,20 @@ namespace FreeSql.Odbc.SqlServer
|
||||
++colidx;
|
||||
}
|
||||
|
||||
if (versionGreaterThan10)
|
||||
{
|
||||
var validx = sql.IndexOf(") VALUES");
|
||||
if (validx == -1) throw new ArgumentException("找不到 VALUES");
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
var validx = sql.IndexOf(") SELECT ");
|
||||
if (validx == -1) throw new ArgumentException("找不到 SELECT");
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
}
|
||||
|
||||
sql = sb.ToString();
|
||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||
@ -96,10 +131,34 @@ namespace FreeSql.Odbc.SqlServer
|
||||
public override Task<long> ExecuteIdentityAsync() => base.SplitExecuteIdentityAsync(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()
|
||||
{
|
||||
var sql = this.ToSql();
|
||||
var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10;
|
||||
var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false);
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||
@ -125,7 +184,8 @@ namespace FreeSql.Odbc.SqlServer
|
||||
}
|
||||
async protected override Task<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>();
|
||||
|
||||
var sb = new StringBuilder();
|
||||
@ -138,10 +198,20 @@ namespace FreeSql.Odbc.SqlServer
|
||||
++colidx;
|
||||
}
|
||||
|
||||
if (versionGreaterThan10)
|
||||
{
|
||||
var validx = sql.IndexOf(") VALUES");
|
||||
if (validx == -1) throw new ArgumentException("找不到 VALUES");
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
var validx = sql.IndexOf(") SELECT ");
|
||||
if (validx == -1) throw new ArgumentException("找不到 SELECT");
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
}
|
||||
|
||||
sql = sb.ToString();
|
||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||
|
@ -106,7 +106,10 @@ ELSE
|
||||
protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects)
|
||||
{
|
||||
var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5));
|
||||
var database = conn.Value.Database;
|
||||
string database = null;
|
||||
try
|
||||
{
|
||||
database = conn.Value.Database;
|
||||
Func<string, string, object> ExecuteScalar = (db, sql) =>
|
||||
{
|
||||
if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(db);
|
||||
@ -125,8 +128,7 @@ ELSE
|
||||
}
|
||||
};
|
||||
var sb = new StringBuilder();
|
||||
try
|
||||
{
|
||||
|
||||
foreach (var obj in objects)
|
||||
{
|
||||
if (sb.Length > 0) sb.Append("\r\n");
|
||||
@ -243,10 +245,9 @@ a.name 'Column'
|
||||
else '' end as 'SqlType'
|
||||
,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable'
|
||||
,case when a.is_identity = 1 then '1' else '0' end 'IsIdentity'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment'
|
||||
from sys.columns a
|
||||
inner join sys.types b on b.user_type_id = a.user_type_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id
|
||||
left join sys.tables d on d.object_id = a.object_id
|
||||
left join sys.schemas e on e.schema_id = d.schema_id
|
||||
where a.object_id in (object_id(N'[{1}].[{2}]'));
|
||||
@ -377,6 +378,7 @@ use " + database, tboldname ?? tbname);
|
||||
if (string.IsNullOrEmpty(tbcol.Comment) == false)
|
||||
AddOrUpdateMS_Description(sb, tbname[1], $"FreeSqlTmp_{tbname[2]}", tbcol.Attribute.Name, tbcol.Comment);
|
||||
}
|
||||
if ((_commonUtils as OdbcSqlServerUtils).ServerVersion > 9) //SqlServer 2008+
|
||||
sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n");
|
||||
if (idents) sb.Append("SET IDENTITY_INSERT ").Append(tmptablename).Append(" ON;\r\n");
|
||||
sb.Append("IF EXISTS(SELECT 1 FROM ").Append(tablename).Append(")\r\n");
|
||||
@ -426,6 +428,7 @@ use " + database, tboldname ?? tbname);
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(database) == false)
|
||||
conn.Value.ChangeDatabase(database);
|
||||
_orm.Ado.MasterPool.Return(conn);
|
||||
}
|
||||
|
@ -130,32 +130,29 @@ select
|
||||
a.Object_id
|
||||
,b.name 'Owner'
|
||||
,a.name 'Name'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment'
|
||||
,'TABLE' type
|
||||
from sys.tables a
|
||||
inner join sys.schemas b on b.schema_id = a.schema_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description'
|
||||
where not(b.name = 'dbo' and a.name = 'sysdiagrams')
|
||||
union all
|
||||
select
|
||||
a.Object_id
|
||||
,b.name 'Owner'
|
||||
,a.name 'Name'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment'
|
||||
,'VIEW' type
|
||||
from sys.views a
|
||||
inner join sys.schemas b on b.schema_id = a.schema_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description'
|
||||
union all
|
||||
select
|
||||
a.Object_id
|
||||
,b.name 'Owner'
|
||||
,a.name 'Name'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment'
|
||||
,'StoreProcedure' type
|
||||
from sys.procedures a
|
||||
inner join sys.schemas b on b.schema_id = a.schema_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description'
|
||||
where a.type = 'P' and charindex('diagram', a.name) = 0
|
||||
order by type desc, b.name, a.name
|
||||
;
|
||||
@ -241,10 +238,9 @@ isnull(e.name,'') + '.' + isnull(d.name,'')
|
||||
else cast(a.max_length as varchar) end + ')'
|
||||
when b.name in ('Numeric', 'Decimal') then '(' + cast(a.precision as varchar) + ',' + cast(a.scale as varchar) + ')'
|
||||
else '' end as 'SqlType'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment'
|
||||
{0} a
|
||||
inner join sys.types b on b.user_type_id = a.user_type_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id
|
||||
left join sys.tables d on d.object_id = a.object_id
|
||||
left join sys.schemas e on e.schema_id = d.schema_id
|
||||
where {1}
|
||||
@ -257,8 +253,8 @@ from sys.columns", loc8.ToString().Replace("a.table_name", "a.object_id"));
|
||||
{
|
||||
sql += "union all" +
|
||||
string.Format(tsql_place.Replace(
|
||||
"left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id",
|
||||
"left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.parameter_id"), @"
|
||||
"select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id",
|
||||
"select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.parameter_id"), @"
|
||||
,cast(0 as bit) 'IsNullable'
|
||||
,a.is_output 'IsIdentity'
|
||||
from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"));
|
||||
|
@ -42,7 +42,7 @@ namespace FreeSql.Odbc.SqlServer
|
||||
{
|
||||
try
|
||||
{
|
||||
(this.InternalCommonUtils as OdbcSqlServerUtils).IsSelectRowNumber = int.Parse(conn.Value.ServerVersion.Split('.')[0]) <= 10;
|
||||
(this.InternalCommonUtils as OdbcSqlServerUtils).ServerVersion = int.Parse(conn.Value.ServerVersion.Split('.')[0]);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -4,6 +4,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@ -21,9 +22,34 @@ namespace FreeSql.SqlServer.Curd
|
||||
public override long ExecuteIdentity() => base.SplitExecuteIdentity(1000, 2100);
|
||||
public override List<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()
|
||||
{
|
||||
var sql = this.ToSql();
|
||||
var versionGreaterThan10 = (_commonUtils as SqlServerUtils).ServerVersion > 10;
|
||||
var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false);
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||
@ -49,7 +75,8 @@ namespace FreeSql.SqlServer.Curd
|
||||
}
|
||||
protected override List<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>();
|
||||
|
||||
var sb = new StringBuilder();
|
||||
@ -62,10 +89,20 @@ namespace FreeSql.SqlServer.Curd
|
||||
++colidx;
|
||||
}
|
||||
|
||||
if (versionGreaterThan10)
|
||||
{
|
||||
var validx = sql.IndexOf(") VALUES");
|
||||
if (validx == -1) throw new ArgumentException("找不到 VALUES");
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
var validx = sql.IndexOf(") SELECT ");
|
||||
if (validx == -1) throw new ArgumentException("找不到 SELECT");
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
}
|
||||
|
||||
sql = sb.ToString();
|
||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||
@ -95,9 +132,34 @@ namespace FreeSql.SqlServer.Curd
|
||||
public override Task<long> ExecuteIdentityAsync() => base.SplitExecuteIdentityAsync(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()
|
||||
{
|
||||
var sql = this.ToSql();
|
||||
var versionGreaterThan10 = (_commonUtils as SqlServerUtils).ServerVersion > 10;
|
||||
var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false);
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||
@ -123,7 +185,8 @@ namespace FreeSql.SqlServer.Curd
|
||||
}
|
||||
async protected override Task<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>();
|
||||
|
||||
var sb = new StringBuilder();
|
||||
@ -136,10 +199,20 @@ namespace FreeSql.SqlServer.Curd
|
||||
++colidx;
|
||||
}
|
||||
|
||||
if (versionGreaterThan10)
|
||||
{
|
||||
var validx = sql.IndexOf(") VALUES");
|
||||
if (validx == -1) throw new ArgumentException("找不到 VALUES");
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
var validx = sql.IndexOf(") SELECT ");
|
||||
if (validx == -1) throw new ArgumentException("找不到 SELECT");
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
}
|
||||
|
||||
sql = sb.ToString();
|
||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||
|
@ -109,7 +109,10 @@ ELSE
|
||||
protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects)
|
||||
{
|
||||
var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5));
|
||||
var database = conn.Value.Database;
|
||||
string database = null;
|
||||
try
|
||||
{
|
||||
database = conn.Value.Database;
|
||||
Func<string, string, object> ExecuteScalar = (db, sql) =>
|
||||
{
|
||||
if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(db);
|
||||
@ -128,8 +131,7 @@ ELSE
|
||||
}
|
||||
};
|
||||
var sb = new StringBuilder();
|
||||
try
|
||||
{
|
||||
|
||||
foreach (var obj in objects)
|
||||
{
|
||||
if (sb.Length > 0) sb.Append("\r\n");
|
||||
@ -246,10 +248,9 @@ a.name 'Column'
|
||||
else '' end as 'SqlType'
|
||||
,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable'
|
||||
,case when a.is_identity = 1 then '1' else '0' end 'IsIdentity'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment'
|
||||
from sys.columns a
|
||||
inner join sys.types b on b.user_type_id = a.user_type_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id
|
||||
left join sys.tables d on d.object_id = a.object_id
|
||||
left join sys.schemas e on e.schema_id = d.schema_id
|
||||
where a.object_id in (object_id(N'[{1}].[{2}]'));
|
||||
@ -380,6 +381,7 @@ use " + database, tboldname ?? tbname);
|
||||
if (string.IsNullOrEmpty(tbcol.Comment) == false)
|
||||
AddOrUpdateMS_Description(sb, tbname[1], $"FreeSqlTmp_{tbname[2]}", tbcol.Attribute.Name, tbcol.Comment);
|
||||
}
|
||||
if ((_commonUtils as SqlServerUtils).ServerVersion > 9) //SqlServer 2008+
|
||||
sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n");
|
||||
if (idents) sb.Append("SET IDENTITY_INSERT ").Append(tmptablename).Append(" ON;\r\n");
|
||||
sb.Append("IF EXISTS(SELECT 1 FROM ").Append(tablename).Append(")\r\n");
|
||||
@ -429,6 +431,7 @@ use " + database, tboldname ?? tbname);
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(database) == false)
|
||||
conn.Value.ChangeDatabase(database);
|
||||
_orm.Ado.MasterPool.Return(conn);
|
||||
}
|
||||
|
@ -133,32 +133,29 @@ select
|
||||
a.Object_id
|
||||
,b.name 'Owner'
|
||||
,a.name 'Name'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment'
|
||||
,'TABLE' type
|
||||
from sys.tables a
|
||||
inner join sys.schemas b on b.schema_id = a.schema_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description'
|
||||
where not(b.name = 'dbo' and a.name = 'sysdiagrams')
|
||||
union all
|
||||
select
|
||||
a.Object_id
|
||||
,b.name 'Owner'
|
||||
,a.name 'Name'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment'
|
||||
,'VIEW' type
|
||||
from sys.views a
|
||||
inner join sys.schemas b on b.schema_id = a.schema_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description'
|
||||
union all
|
||||
select
|
||||
a.Object_id
|
||||
,b.name 'Owner'
|
||||
,a.name 'Name'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = 0 AND name = 'MS_Description') 'Comment'
|
||||
,'StoreProcedure' type
|
||||
from sys.procedures a
|
||||
inner join sys.schemas b on b.schema_id = a.schema_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = 0 AND c.name = 'MS_Description'
|
||||
where a.type = 'P' and charindex('diagram', a.name) = 0
|
||||
order by type desc, b.name, a.name
|
||||
;
|
||||
@ -244,10 +241,9 @@ isnull(e.name,'') + '.' + isnull(d.name,'')
|
||||
else cast(a.max_length as varchar) end + ')'
|
||||
when b.name in ('Numeric', 'Decimal') then '(' + cast(a.precision as varchar) + ',' + cast(a.scale as varchar) + ')'
|
||||
else '' end as 'SqlType'
|
||||
,c.value
|
||||
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment'
|
||||
{0} a
|
||||
inner join sys.types b on b.user_type_id = a.user_type_id
|
||||
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id
|
||||
left join sys.tables d on d.object_id = a.object_id
|
||||
left join sys.schemas e on e.schema_id = d.schema_id
|
||||
where {1}
|
||||
@ -260,8 +256,8 @@ from sys.columns", loc8.ToString().Replace("a.table_name", "a.object_id"));
|
||||
{
|
||||
sql += "union all" +
|
||||
string.Format(tsql_place.Replace(
|
||||
"left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id",
|
||||
"left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.parameter_id"), @"
|
||||
"select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id",
|
||||
"select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.parameter_id"), @"
|
||||
,cast(0 as bit) 'IsNullable'
|
||||
,a.is_output 'IsIdentity'
|
||||
from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"));
|
||||
|
@ -43,7 +43,7 @@ namespace FreeSql.SqlServer
|
||||
{
|
||||
try
|
||||
{
|
||||
(this.InternalCommonUtils as SqlServerUtils).IsSelectRowNumber = int.Parse(conn.Value.ServerVersion.Split('.')[0]) <= 10;
|
||||
(this.InternalCommonUtils as SqlServerUtils).ServerVersion = int.Parse(conn.Value.ServerVersion.Split('.')[0]);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user