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

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

View File

@ -20,9 +20,9 @@ namespace FreeSql.Tests.DataAnnotations
[Fact]
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);
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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)

View File

@ -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());
}
}
}

View File

@ -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();

View File

@ -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();

View File

@ -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();

View File

@ -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();

View File

@ -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

View File

@ -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()

View File

@ -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();
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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()

View File

@ -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]

View File

@ -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

View File

@ -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();

View File

@ -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 })

View File

@ -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&lt;User&gt;("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 })
</summary>
<typeparam name="T"></typeparam>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``1(System.String,System.Object)">
<summary>
执行SQL返回对象集合QueryAsync&lt;User&gt;("select * from user where age > @age", new { age = 25 })
</summary>
<typeparam name="T"></typeparam>
<param name="cmdText"></param>
<param name="parms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``2(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
<summary>
执行SQL返回对象集合Query&lt;User&gt;("select * from user where age > @age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 })
</summary>
<typeparam name="T1"></typeparam>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``2(System.String,System.Object)">
<summary>
执行SQL返回对象集合Query&lt;User&gt;("select * from user where age > @age; select * from address", new { age = 25 })
</summary>
<typeparam name="T1"></typeparam>
<param name="cmdText"></param>
<param name="parms"></param>
<returns></returns>
</member>
<member name="P:FreeSql.IAop.ParseExpression">
<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>

View File

@ -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())

View File

@ -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);

View File

@ -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;
}
var validx = sql.IndexOf(") VALUES");
if (validx == -1) throw new ArgumentException("找不到 VALUES");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
if (versionGreaterThan10)
{
var validx = sql.IndexOf(") VALUES");
if (validx == -1) throw new ArgumentException("找不到 VALUES");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
}
else
{
var validx = sql.IndexOf(") SELECT ");
if (validx == -1) throw new ArgumentException("找不到 SELECT");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
}
sql = sb.ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
@ -95,11 +130,35 @@ namespace FreeSql.Odbc.SqlServer
public override Task<int> ExecuteAffrowsAsync() => base.SplitExecuteAffrowsAsync(1000, 2100);
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;
}
var validx = sql.IndexOf(") VALUES");
if (validx == -1) throw new ArgumentException("找不到 VALUES");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
if (versionGreaterThan10)
{
var validx = sql.IndexOf(") VALUES");
if (validx == -1) throw new ArgumentException("找不到 VALUES");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
}
else
{
var validx = sql.IndexOf(") SELECT ");
if (validx == -1) throw new ArgumentException("找不到 SELECT");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
}
sql = sb.ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);

View File

@ -106,27 +106,29 @@ ELSE
protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects)
{
var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5));
var database = conn.Value.Database;
Func<string, string, object> ExecuteScalar = (db, sql) =>
{
if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(db);
try
{
using (var cmd = conn.Value.CreateCommand())
{
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
return cmd.ExecuteScalar();
}
}
finally
{
if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(database);
}
};
var sb = new StringBuilder();
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);
try
{
using (var cmd = conn.Value.CreateCommand())
{
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
return cmd.ExecuteScalar();
}
}
finally
{
if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(database);
}
};
var sb = new StringBuilder();
foreach (var obj in objects)
{
if (sb.Length > 0) sb.Append("\r\n");
@ -243,10 +245,9 @@ a.name 'Column'
else '' end as 'SqlType'
,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable'
,case when a.is_identity = 1 then '1' else '0' end 'IsIdentity'
,c.value
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment'
from sys.columns a
inner join sys.types b on b.user_type_id = a.user_type_id
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id
left join sys.tables d on d.object_id = a.object_id
left join sys.schemas e on e.schema_id = d.schema_id
where a.object_id in (object_id(N'[{1}].[{2}]'));
@ -377,7 +378,8 @@ use " + database, tboldname ?? tbname);
if (string.IsNullOrEmpty(tbcol.Comment) == false)
AddOrUpdateMS_Description(sb, tbname[1], $"FreeSqlTmp_{tbname[2]}", tbcol.Attribute.Name, tbcol.Comment);
}
sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n");
if ((_commonUtils as OdbcSqlServerUtils).ServerVersion > 9) //SqlServer 2008+
sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n");
if (idents) sb.Append("SET IDENTITY_INSERT ").Append(tmptablename).Append(" ON;\r\n");
sb.Append("IF EXISTS(SELECT 1 FROM ").Append(tablename).Append(")\r\n");
sb.Append("\tEXEC('INSERT INTO ").Append(tmptablename).Append(" (");
@ -426,7 +428,8 @@ use " + database, tboldname ?? tbname);
{
try
{
conn.Value.ChangeDatabase(database);
if (string.IsNullOrEmpty(database) == false)
conn.Value.ChangeDatabase(database);
_orm.Ado.MasterPool.Return(conn);
}
catch

View File

@ -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"));

View File

@ -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
{

View File

@ -17,7 +17,9 @@ namespace FreeSql.Odbc.SqlServer
{
}
public bool IsSelectRowNumber = true;
public bool IsSelectRowNumber => ServerVersion <= 10;
public bool IsSqlServer2005 => ServerVersion == 9;
public int ServerVersion = 0;
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, Type type, object value)
{

View File

@ -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;
}
var validx = sql.IndexOf(") VALUES");
if (validx == -1) throw new ArgumentException("找不到 VALUES");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
if (versionGreaterThan10)
{
var validx = sql.IndexOf(") VALUES");
if (validx == -1) throw new ArgumentException("找不到 VALUES");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
}
else
{
var validx = sql.IndexOf(") SELECT ");
if (validx == -1) throw new ArgumentException("找不到 SELECT");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
}
sql = sb.ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
@ -95,9 +132,34 @@ namespace FreeSql.SqlServer.Curd
public override Task<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;
}
var validx = sql.IndexOf(") VALUES");
if (validx == -1) throw new ArgumentException("找不到 VALUES");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
if (versionGreaterThan10)
{
var validx = sql.IndexOf(") VALUES");
if (validx == -1) throw new ArgumentException("找不到 VALUES");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
}
else
{
var validx = sql.IndexOf(") SELECT ");
if (validx == -1) throw new ArgumentException("找不到 SELECT");
sb.Insert(0, sql.Substring(0, validx + 1));
sb.Append(sql.Substring(validx + 1));
}
sql = sb.ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);

View File

@ -109,27 +109,29 @@ ELSE
protected override string GetComparisonDDLStatements(params (Type entityType, string tableName)[] objects)
{
var conn = _orm.Ado.MasterPool.Get(TimeSpan.FromSeconds(5));
var database = conn.Value.Database;
Func<string, string, object> ExecuteScalar = (db, sql) =>
{
if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(db);
try
{
using (var cmd = conn.Value.CreateCommand())
{
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
return cmd.ExecuteScalar();
}
}
finally
{
if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(database);
}
};
var sb = new StringBuilder();
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);
try
{
using (var cmd = conn.Value.CreateCommand())
{
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
return cmd.ExecuteScalar();
}
}
finally
{
if (string.Compare(database, db) != 0) conn.Value.ChangeDatabase(database);
}
};
var sb = new StringBuilder();
foreach (var obj in objects)
{
if (sb.Length > 0) sb.Append("\r\n");
@ -246,10 +248,9 @@ a.name 'Column'
else '' end as 'SqlType'
,case when a.is_nullable = 1 then '1' else '0' end 'IsNullable'
,case when a.is_identity = 1 then '1' else '0' end 'IsIdentity'
,c.value
,(select value from sys.extended_properties where major_id = a.object_id AND minor_id = a.column_id AND name = 'MS_Description') 'Comment'
from sys.columns a
inner join sys.types b on b.user_type_id = a.user_type_id
left join sys.extended_properties AS c ON c.major_id = a.object_id AND c.minor_id = a.column_id
left join sys.tables d on d.object_id = a.object_id
left join sys.schemas e on e.schema_id = d.schema_id
where a.object_id in (object_id(N'[{1}].[{2}]'));
@ -380,7 +381,8 @@ use " + database, tboldname ?? tbname);
if (string.IsNullOrEmpty(tbcol.Comment) == false)
AddOrUpdateMS_Description(sb, tbname[1], $"FreeSqlTmp_{tbname[2]}", tbcol.Attribute.Name, tbcol.Comment);
}
sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n");
if ((_commonUtils as SqlServerUtils).ServerVersion > 9) //SqlServer 2008+
sb.Append("ALTER TABLE ").Append(tmptablename).Append(" SET (LOCK_ESCALATION = TABLE);\r\n");
if (idents) sb.Append("SET IDENTITY_INSERT ").Append(tmptablename).Append(" ON;\r\n");
sb.Append("IF EXISTS(SELECT 1 FROM ").Append(tablename).Append(")\r\n");
sb.Append("\tEXEC('INSERT INTO ").Append(tmptablename).Append(" (");
@ -429,7 +431,8 @@ use " + database, tboldname ?? tbname);
{
try
{
conn.Value.ChangeDatabase(database);
if (string.IsNullOrEmpty(database) == false)
conn.Value.ChangeDatabase(database);
_orm.Ado.MasterPool.Return(conn);
}
catch

View File

@ -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"));

View File

@ -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
{

View File

@ -17,7 +17,9 @@ namespace FreeSql.SqlServer
{
}
public bool IsSelectRowNumber = true;
public bool IsSelectRowNumber => ServerVersion <= 10;
public bool IsSqlServer2005 => ServerVersion == 9;
public int ServerVersion = 0;
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, Type type, object value)
{