mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 12:28:15 +08:00
- 增加 IncludeMany Take(5) 功能,实现每个子集合只取5条记录;
This commit is contained in:
@ -957,6 +957,11 @@ namespace FreeSql.Tests.MySql {
|
||||
};
|
||||
Assert.Equal(5, g.mysql.Insert(model4s).ExecuteAffrows());
|
||||
|
||||
var t0 = g.mysql.Select<TestInclude_OneToManyModel2>()
|
||||
.IncludeMany(a => a.childs.Where(m3 => m3.model2111Idaaa == a.model2id))
|
||||
.Where(a => a.model2id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t1 = g.mysql.Select<TestInclude_OneToManyModel1>()
|
||||
.IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id))
|
||||
.Where(a => a.id <= model1.id)
|
||||
@ -967,7 +972,76 @@ namespace FreeSql.Tests.MySql {
|
||||
then => then.IncludeMany(m3 => m3.childs2.Where(m4 => m4.model3333Id333 == m3.id)))
|
||||
.Where(a => a.id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t00 = g.mysql.Select<TestInclude_OneToManyModel2>()
|
||||
.IncludeMany(a => a.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2id))
|
||||
.Where(a => a.model2id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t11 = g.mysql.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 = g.mysql.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)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public class TestInclude_OneToManyModel11 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public int model2id { get; set; }
|
||||
public string m3setting { get; set; }
|
||||
public TestInclude_OneToManyModel22 model2 { get; set; }
|
||||
public string m1name { get; set; }
|
||||
}
|
||||
|
||||
public class TestInclude_OneToManyModel22 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public string m2setting { get; set; }
|
||||
public List<TestInclude_OneToManyModel33> childs { get; set; }
|
||||
}
|
||||
public class TestInclude_OneToManyModel33 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public int model2Id { get; set; }
|
||||
public string title { get; set; }
|
||||
public string setting { get; set; }
|
||||
}
|
||||
[Fact]
|
||||
public void Include_OneToMany2() {
|
||||
string setting = "x";
|
||||
var model2 = new TestInclude_OneToManyModel22 { m2setting = DateTime.Now.Second.ToString() };
|
||||
model2.id = (int)g.mysql.Insert(model2).ExecuteIdentity();
|
||||
|
||||
var model3s = new[]
|
||||
{
|
||||
new TestInclude_OneToManyModel33 {model2Id = model2.id, title = "testmodel3__111", setting = setting},
|
||||
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, g.mysql.Insert(model3s).ExecuteAffrows());
|
||||
|
||||
var model1 = new TestInclude_OneToManyModel11 { m1name = DateTime.Now.Second.ToString(), model2id = model2.id, m3setting = setting };
|
||||
model1.id = (int)g.mysql.Insert(model1).ExecuteIdentity();
|
||||
|
||||
var t1 = g.mysql.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 = g.mysql.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)
|
||||
.ToList(true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Include_OneToChilds() {
|
||||
var tag1 = new Tag {
|
||||
@ -1011,7 +1085,7 @@ namespace FreeSql.Tests.MySql {
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags = g.mysql.Select<Tag>()
|
||||
var tags1 = g.mysql.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs)
|
||||
@ -1033,6 +1107,29 @@ namespace FreeSql.Tests.MySql {
|
||||
.IncludeMany(a => a.Songs)
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags11 = g.mysql.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 = g.mysql.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags.Take(1),
|
||||
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)))
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags33 = g.mysql.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)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -1080,14 +1177,14 @@ namespace FreeSql.Tests.MySql {
|
||||
g.mysql.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag2.Id }).ExecuteAffrows();
|
||||
g.mysql.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag3.Id }).ExecuteAffrows();
|
||||
|
||||
var songs = g.mysql.Select<Song>()
|
||||
var songs1 = g.mysql.Select<Song>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs.Count);
|
||||
Assert.Equal(2, songs[0].Tags.Count);
|
||||
Assert.Equal(1, songs[1].Tags.Count);
|
||||
Assert.Equal(3, songs[2].Tags.Count);
|
||||
Assert.Equal(3, songs1.Count);
|
||||
Assert.Equal(2, songs1[0].Tags.Count);
|
||||
Assert.Equal(1, songs1[1].Tags.Count);
|
||||
Assert.Equal(3, songs1[2].Tags.Count);
|
||||
|
||||
var songs2 = g.mysql.Select<Song>()
|
||||
.IncludeMany(a => a.Tags,
|
||||
@ -1098,6 +1195,38 @@ namespace FreeSql.Tests.MySql {
|
||||
Assert.Equal(2, songs2[0].Tags.Count);
|
||||
Assert.Equal(1, songs2[1].Tags.Count);
|
||||
Assert.Equal(3, songs2[2].Tags.Count);
|
||||
|
||||
var tags3 = g.mysql.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 = g.mysql.Select<Song>()
|
||||
.IncludeMany(a => a.Tags.Take(1))
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs11.Count);
|
||||
Assert.Equal(1, songs11[0].Tags.Count);
|
||||
Assert.Equal(1, songs11[1].Tags.Count);
|
||||
Assert.Equal(1, songs11[2].Tags.Count);
|
||||
|
||||
var songs22 = g.mysql.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)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs22.Count);
|
||||
Assert.Equal(1, songs22[0].Tags.Count);
|
||||
Assert.Equal(1, songs22[1].Tags.Count);
|
||||
Assert.Equal(1, songs22[2].Tags.Count);
|
||||
|
||||
var tags33 = g.mysql.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)
|
||||
.ToList(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -850,6 +850,11 @@ namespace FreeSql.Tests.Oracle {
|
||||
};
|
||||
Assert.Equal(5, g.oracle.Insert(model4s).ExecuteAffrows());
|
||||
|
||||
var t0 = g.oracle.Select<TiOtmModel2>()
|
||||
.IncludeMany(a => a.childs.Where(m3 => m3.model2111Idaaa == a.model2id))
|
||||
.Where(a => a.model2id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t1 = g.oracle.Select<TiOtmModel1>()
|
||||
.IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id))
|
||||
.Where(a => a.id <= model1.id)
|
||||
@ -860,7 +865,76 @@ namespace FreeSql.Tests.Oracle {
|
||||
then => then.IncludeMany(m3 => m3.childs2.Where(m4 => m4.model3333Id333 == m3.id)))
|
||||
.Where(a => a.id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t00 = g.oracle.Select<TiOtmModel2>()
|
||||
.IncludeMany(a => a.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2id))
|
||||
.Where(a => a.model2id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t11 = g.oracle.Select<TiOtmModel1>()
|
||||
.IncludeMany(a => a.model2.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2.model2id))
|
||||
.Where(a => a.id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t22 = g.oracle.Select<TiOtmModel1>()
|
||||
.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)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public class TiOtmModel11 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public int model2id { get; set; }
|
||||
public string m3setting { get; set; }
|
||||
public TiOtmModel22 model2 { get; set; }
|
||||
public string m1name { get; set; }
|
||||
}
|
||||
|
||||
public class TiOtmModel22 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public string m2setting { get; set; }
|
||||
public List<TiOtmModel33> childs { get; set; }
|
||||
}
|
||||
public class TiOtmModel33 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public int model2Id { get; set; }
|
||||
public string title { get; set; }
|
||||
public string setting { get; set; }
|
||||
}
|
||||
[Fact]
|
||||
public void Include_OneToMany2() {
|
||||
string setting = "x";
|
||||
var model2 = new TiOtmModel22 { m2setting = DateTime.Now.Second.ToString() };
|
||||
model2.id = (int)g.oracle.Insert(model2).ExecuteIdentity();
|
||||
|
||||
var model3s = new[]
|
||||
{
|
||||
new TiOtmModel33 {model2Id = model2.id, title = "testmodel3__111", setting = setting},
|
||||
new TiOtmModel33 {model2Id = model2.id, title = "testmodel3__222", setting = setting},
|
||||
new TiOtmModel33 {model2Id = model2.id, title = "testmodel3__333", setting = setting}
|
||||
};
|
||||
Assert.Equal(3, g.oracle.Insert(model3s).ExecuteAffrows());
|
||||
|
||||
var model1 = new TiOtmModel11 { m1name = DateTime.Now.Second.ToString(), model2id = model2.id, m3setting = setting };
|
||||
model1.id = (int)g.oracle.Insert(model1).ExecuteIdentity();
|
||||
|
||||
var t1 = g.oracle.Select<TiOtmModel11>()
|
||||
.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 = g.oracle.Select<TiOtmModel11>()
|
||||
.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)
|
||||
.ToList(true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Include_OneToChilds() {
|
||||
var tag1 = new Tag {
|
||||
@ -904,7 +978,7 @@ namespace FreeSql.Tests.Oracle {
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags = g.oracle.Select<Tag>()
|
||||
var tags1 = g.oracle.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs)
|
||||
@ -926,6 +1000,29 @@ namespace FreeSql.Tests.Oracle {
|
||||
.IncludeMany(a => a.Songs)
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags11 = g.oracle.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 = g.oracle.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags.Take(1),
|
||||
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)))
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags33 = g.oracle.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)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -973,14 +1070,14 @@ namespace FreeSql.Tests.Oracle {
|
||||
g.oracle.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag2.Id }).ExecuteAffrows();
|
||||
g.oracle.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag3.Id }).ExecuteAffrows();
|
||||
|
||||
var songs = g.oracle.Select<Song>()
|
||||
var songs1 = g.oracle.Select<Song>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs.Count);
|
||||
Assert.Equal(2, songs[0].Tags.Count);
|
||||
Assert.Equal(1, songs[1].Tags.Count);
|
||||
Assert.Equal(3, songs[2].Tags.Count);
|
||||
Assert.Equal(3, songs1.Count);
|
||||
Assert.Equal(2, songs1[0].Tags.Count);
|
||||
Assert.Equal(1, songs1[1].Tags.Count);
|
||||
Assert.Equal(3, songs1[2].Tags.Count);
|
||||
|
||||
var songs2 = g.oracle.Select<Song>()
|
||||
.IncludeMany(a => a.Tags,
|
||||
@ -991,6 +1088,38 @@ namespace FreeSql.Tests.Oracle {
|
||||
Assert.Equal(2, songs2[0].Tags.Count);
|
||||
Assert.Equal(1, songs2[1].Tags.Count);
|
||||
Assert.Equal(3, songs2[2].Tags.Count);
|
||||
|
||||
var tags3 = g.oracle.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 = g.oracle.Select<Song>()
|
||||
.IncludeMany(a => a.Tags.Take(1))
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs11.Count);
|
||||
Assert.Equal(1, songs11[0].Tags.Count);
|
||||
Assert.Equal(1, songs11[1].Tags.Count);
|
||||
Assert.Equal(1, songs11[2].Tags.Count);
|
||||
|
||||
var songs22 = g.oracle.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)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs22.Count);
|
||||
Assert.Equal(1, songs22[0].Tags.Count);
|
||||
Assert.Equal(1, songs22[1].Tags.Count);
|
||||
Assert.Equal(1, songs22[2].Tags.Count);
|
||||
|
||||
var tags33 = g.oracle.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)
|
||||
.ToList(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -916,6 +916,11 @@ namespace FreeSql.Tests.PostgreSQL {
|
||||
};
|
||||
Assert.Equal(5, g.pgsql.Insert(model4s).ExecuteAffrows());
|
||||
|
||||
var t0 = g.pgsql.Select<TestInclude_OneToManyModel2>()
|
||||
.IncludeMany(a => a.childs.Where(m3 => m3.model2111Idaaa == a.model2id))
|
||||
.Where(a => a.model2id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t1 = g.pgsql.Select<TestInclude_OneToManyModel1>()
|
||||
.IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id))
|
||||
.Where(a => a.id <= model1.id)
|
||||
@ -926,7 +931,76 @@ namespace FreeSql.Tests.PostgreSQL {
|
||||
then => then.IncludeMany(m3 => m3.childs2.Where(m4 => m4.model3333Id333 == m3.id)))
|
||||
.Where(a => a.id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t00 = g.pgsql.Select<TestInclude_OneToManyModel2>()
|
||||
.IncludeMany(a => a.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2id))
|
||||
.Where(a => a.model2id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t11 = g.pgsql.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 = g.pgsql.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)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public class TestInclude_OneToManyModel11 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public int model2id { get; set; }
|
||||
public string m3setting { get; set; }
|
||||
public TestInclude_OneToManyModel22 model2 { get; set; }
|
||||
public string m1name { get; set; }
|
||||
}
|
||||
|
||||
public class TestInclude_OneToManyModel22 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public string m2setting { get; set; }
|
||||
public List<TestInclude_OneToManyModel33> childs { get; set; }
|
||||
}
|
||||
public class TestInclude_OneToManyModel33 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public int model2Id { get; set; }
|
||||
public string title { get; set; }
|
||||
public string setting { get; set; }
|
||||
}
|
||||
[Fact]
|
||||
public void Include_OneToMany2() {
|
||||
string setting = "x";
|
||||
var model2 = new TestInclude_OneToManyModel22 { m2setting = DateTime.Now.Second.ToString() };
|
||||
model2.id = (int)g.pgsql.Insert(model2).ExecuteIdentity();
|
||||
|
||||
var model3s = new[]
|
||||
{
|
||||
new TestInclude_OneToManyModel33 {model2Id = model2.id, title = "testmodel3__111", setting = setting},
|
||||
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, g.pgsql.Insert(model3s).ExecuteAffrows());
|
||||
|
||||
var model1 = new TestInclude_OneToManyModel11 { m1name = DateTime.Now.Second.ToString(), model2id = model2.id, m3setting = setting };
|
||||
model1.id = (int)g.pgsql.Insert(model1).ExecuteIdentity();
|
||||
|
||||
var t1 = g.pgsql.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 = g.pgsql.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)
|
||||
.ToList(true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Include_OneToChilds() {
|
||||
var tag1 = new Tag {
|
||||
@ -970,7 +1044,7 @@ namespace FreeSql.Tests.PostgreSQL {
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags = g.pgsql.Select<Tag>()
|
||||
var tags1 = g.pgsql.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs)
|
||||
@ -992,6 +1066,29 @@ namespace FreeSql.Tests.PostgreSQL {
|
||||
.IncludeMany(a => a.Songs)
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags11 = g.pgsql.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 = g.pgsql.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags.Take(1),
|
||||
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)))
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags33 = g.pgsql.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)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -1039,14 +1136,14 @@ namespace FreeSql.Tests.PostgreSQL {
|
||||
g.pgsql.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag2.Id }).ExecuteAffrows();
|
||||
g.pgsql.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag3.Id }).ExecuteAffrows();
|
||||
|
||||
var songs = g.pgsql.Select<Song>()
|
||||
var songs1 = g.pgsql.Select<Song>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs.Count);
|
||||
Assert.Equal(2, songs[0].Tags.Count);
|
||||
Assert.Equal(1, songs[1].Tags.Count);
|
||||
Assert.Equal(3, songs[2].Tags.Count);
|
||||
Assert.Equal(3, songs1.Count);
|
||||
Assert.Equal(2, songs1[0].Tags.Count);
|
||||
Assert.Equal(1, songs1[1].Tags.Count);
|
||||
Assert.Equal(3, songs1[2].Tags.Count);
|
||||
|
||||
var songs2 = g.pgsql.Select<Song>()
|
||||
.IncludeMany(a => a.Tags,
|
||||
@ -1057,6 +1154,38 @@ namespace FreeSql.Tests.PostgreSQL {
|
||||
Assert.Equal(2, songs2[0].Tags.Count);
|
||||
Assert.Equal(1, songs2[1].Tags.Count);
|
||||
Assert.Equal(3, songs2[2].Tags.Count);
|
||||
|
||||
var tags3 = g.pgsql.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 = g.pgsql.Select<Song>()
|
||||
.IncludeMany(a => a.Tags.Take(1))
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs11.Count);
|
||||
Assert.Equal(1, songs11[0].Tags.Count);
|
||||
Assert.Equal(1, songs11[1].Tags.Count);
|
||||
Assert.Equal(1, songs11[2].Tags.Count);
|
||||
|
||||
var songs22 = g.pgsql.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)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs22.Count);
|
||||
Assert.Equal(1, songs22[0].Tags.Count);
|
||||
Assert.Equal(1, songs22[1].Tags.Count);
|
||||
Assert.Equal(1, songs22[2].Tags.Count);
|
||||
|
||||
var tags33 = g.pgsql.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)
|
||||
.ToList(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -847,6 +847,11 @@ namespace FreeSql.Tests.SqlServer {
|
||||
};
|
||||
Assert.Equal(5, _sqlserverFixture.SqlServer.Insert(model4s).ExecuteAffrows());
|
||||
|
||||
var t0 = _sqlserverFixture.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>()
|
||||
.IncludeMany(a => a.model2.childs.Where(m3 => m3.model2111Idaaa == a.model2.model2id))
|
||||
.Where(a => a.id <= model1.id)
|
||||
@ -857,7 +862,76 @@ namespace FreeSql.Tests.SqlServer {
|
||||
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>()
|
||||
.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>()
|
||||
.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>()
|
||||
.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)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public class TestInclude_OneToManyModel11 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public int model2id { get; set; }
|
||||
public string m3setting { get; set; }
|
||||
public TestInclude_OneToManyModel22 model2 { get; set; }
|
||||
public string m1name { get; set; }
|
||||
}
|
||||
|
||||
public class TestInclude_OneToManyModel22 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public string m2setting { get; set; }
|
||||
public List<TestInclude_OneToManyModel33> childs { get; set; }
|
||||
}
|
||||
public class TestInclude_OneToManyModel33 {
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public int model2Id { get; set; }
|
||||
public string title { get; set; }
|
||||
public string setting { get; set; }
|
||||
}
|
||||
[Fact]
|
||||
public void Include_OneToMany2() {
|
||||
string setting = "x";
|
||||
var model2 = new TestInclude_OneToManyModel22 { m2setting = DateTime.Now.Second.ToString() };
|
||||
model2.id = (int)_sqlserverFixture.SqlServer.Insert(model2).ExecuteIdentity();
|
||||
|
||||
var model3s = new[]
|
||||
{
|
||||
new TestInclude_OneToManyModel33 {model2Id = model2.id, title = "testmodel3__111", setting = setting},
|
||||
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());
|
||||
|
||||
var model1 = new TestInclude_OneToManyModel11 { m1name = DateTime.Now.Second.ToString(), model2id = model2.id, m3setting = setting };
|
||||
model1.id = (int)_sqlserverFixture.SqlServer.Insert(model1).ExecuteIdentity();
|
||||
|
||||
var t1 = _sqlserverFixture.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>()
|
||||
.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)
|
||||
.ToList(true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Include_OneToChilds() {
|
||||
var tag1 = new Tag {
|
||||
@ -901,7 +975,7 @@ namespace FreeSql.Tests.SqlServer {
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags = _sqlserverFixture.SqlServer.Select<Tag>()
|
||||
var tags1 = _sqlserverFixture.SqlServer.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs)
|
||||
@ -923,6 +997,29 @@ namespace FreeSql.Tests.SqlServer {
|
||||
.IncludeMany(a => a.Songs)
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags11 = _sqlserverFixture.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>()
|
||||
.IncludeMany(a => a.Tags.Take(1),
|
||||
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)))
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags33 = _sqlserverFixture.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)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -970,14 +1067,14 @@ namespace FreeSql.Tests.SqlServer {
|
||||
_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();
|
||||
|
||||
var songs = _sqlserverFixture.SqlServer.Select<Song>()
|
||||
var songs1 = _sqlserverFixture.SqlServer.Select<Song>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs.Count);
|
||||
Assert.Equal(2, songs[0].Tags.Count);
|
||||
Assert.Equal(1, songs[1].Tags.Count);
|
||||
Assert.Equal(3, songs[2].Tags.Count);
|
||||
Assert.Equal(3, songs1.Count);
|
||||
Assert.Equal(2, songs1[0].Tags.Count);
|
||||
Assert.Equal(1, songs1[1].Tags.Count);
|
||||
Assert.Equal(3, songs1[2].Tags.Count);
|
||||
|
||||
var songs2 = _sqlserverFixture.SqlServer.Select<Song>()
|
||||
.IncludeMany(a => a.Tags,
|
||||
@ -988,6 +1085,38 @@ namespace FreeSql.Tests.SqlServer {
|
||||
Assert.Equal(2, songs2[0].Tags.Count);
|
||||
Assert.Equal(1, songs2[1].Tags.Count);
|
||||
Assert.Equal(3, songs2[2].Tags.Count);
|
||||
|
||||
var tags3 = _sqlserverFixture.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>()
|
||||
.IncludeMany(a => a.Tags.Take(1))
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs11.Count);
|
||||
Assert.Equal(1, songs11[0].Tags.Count);
|
||||
Assert.Equal(1, songs11[1].Tags.Count);
|
||||
Assert.Equal(1, songs11[2].Tags.Count);
|
||||
|
||||
var songs22 = _sqlserverFixture.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)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs22.Count);
|
||||
Assert.Equal(1, songs22[0].Tags.Count);
|
||||
Assert.Equal(1, songs22[1].Tags.Count);
|
||||
Assert.Equal(1, songs22[2].Tags.Count);
|
||||
|
||||
var tags33 = _sqlserverFixture.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)
|
||||
.ToList(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -828,6 +828,22 @@ namespace FreeSql.Tests.Sqlite {
|
||||
then => then.IncludeMany(m3 => m3.childs2.Where(m4 => m4.model3333Id333 == m3.id)))
|
||||
.Where(a => a.id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t00 = g.sqlite.Select<TestInclude_OneToManyModel2>()
|
||||
.IncludeMany(a => a.childs.Take(1).Where(m3 => m3.model2111Idaaa == a.model2id))
|
||||
.Where(a => a.model2id <= model1.id)
|
||||
.ToList();
|
||||
|
||||
var t11 = g.sqlite.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 = g.sqlite.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)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public class TestInclude_OneToManyModel11 {
|
||||
@ -872,7 +888,13 @@ namespace FreeSql.Tests.Sqlite {
|
||||
var t1 = g.sqlite.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)
|
||||
.Where(a => a.id <= model1.id)
|
||||
.ToList(true);
|
||||
|
||||
var t11 = g.sqlite.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)
|
||||
.ToList(true);
|
||||
}
|
||||
|
||||
@ -919,7 +941,7 @@ namespace FreeSql.Tests.Sqlite {
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags = g.sqlite.Select<Tag>()
|
||||
var tags1 = g.sqlite.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs)
|
||||
@ -941,6 +963,29 @@ namespace FreeSql.Tests.Sqlite {
|
||||
.IncludeMany(a => a.Songs)
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags11 = g.sqlite.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 = g.sqlite.Select<Tag>()
|
||||
.IncludeMany(a => a.Tags.Take(1),
|
||||
then => then.Include(a => a.Parent).IncludeMany(a => a.Songs.Take(1)))
|
||||
.Include(a => a.Parent)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
|
||||
var tags33 = g.sqlite.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)
|
||||
.IncludeMany(a => a.Songs.Take(1))
|
||||
.Where(a => a.Id == tag1.Id || a.Id == tag2.Id)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -988,14 +1033,14 @@ namespace FreeSql.Tests.Sqlite {
|
||||
g.sqlite.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag2.Id }).ExecuteAffrows();
|
||||
g.sqlite.Insert(new Song_tag { Song_id = song3.Id, Tag_id = tag3.Id }).ExecuteAffrows();
|
||||
|
||||
var songs = g.sqlite.Select<Song>()
|
||||
var songs1 = g.sqlite.Select<Song>()
|
||||
.IncludeMany(a => a.Tags)
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs.Count);
|
||||
Assert.Equal(2, songs[0].Tags.Count);
|
||||
Assert.Equal(1, songs[1].Tags.Count);
|
||||
Assert.Equal(3, songs[2].Tags.Count);
|
||||
Assert.Equal(3, songs1.Count);
|
||||
Assert.Equal(2, songs1[0].Tags.Count);
|
||||
Assert.Equal(1, songs1[1].Tags.Count);
|
||||
Assert.Equal(3, songs1[2].Tags.Count);
|
||||
|
||||
var songs2 = g.sqlite.Select<Song>()
|
||||
.IncludeMany(a => a.Tags,
|
||||
@ -1012,6 +1057,32 @@ namespace FreeSql.Tests.Sqlite {
|
||||
.IncludeMany(a => a.Tag.Songs)
|
||||
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
|
||||
.ToList(true);
|
||||
|
||||
|
||||
var songs11 = g.sqlite.Select<Song>()
|
||||
.IncludeMany(a => a.Tags.Take(1))
|
||||
.Where(a => a.Id == song1.Id || a.Id == song2.Id || a.Id == song3.Id)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs11.Count);
|
||||
Assert.Equal(1, songs11[0].Tags.Count);
|
||||
Assert.Equal(1, songs11[1].Tags.Count);
|
||||
Assert.Equal(1, songs11[2].Tags.Count);
|
||||
|
||||
var songs22 = g.sqlite.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)
|
||||
.ToList();
|
||||
Assert.Equal(3, songs22.Count);
|
||||
Assert.Equal(1, songs22[0].Tags.Count);
|
||||
Assert.Equal(1, songs22[1].Tags.Count);
|
||||
Assert.Equal(1, songs22[2].Tags.Count);
|
||||
|
||||
var tags33 = g.sqlite.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)
|
||||
.ToList(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -135,8 +135,8 @@ namespace FreeSql.Tests {
|
||||
});
|
||||
|
||||
var includet1 = g.sqlite.Select<Model1>()
|
||||
.IncludeMany(a => a.Childs, s => s.Where(a => a.id > 0))
|
||||
.IncludeMany(a => a.TestManys.Where(b => b.id == a.id))
|
||||
.IncludeMany(a => a.Childs.Take(2), s => s.Where(a => a.id > 0))
|
||||
.IncludeMany(a => a.TestManys.Take(1).Where(b => b.id == a.id))
|
||||
.Where(a => a.id > 10)
|
||||
.ToList();
|
||||
|
||||
|
Reference in New Issue
Block a user