forked from nhibernate/nhibernate-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathContainsParameterFixture.cs
89 lines (82 loc) · 2.07 KB
/
ContainsParameterFixture.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System;
using System.Linq;
using NHibernate.Cfg.MappingSchema;
using NHibernate.Mapping.ByCode;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.GH3218
{
[TestFixture]
public class ContainsParameterFixture : TestCaseMappingByCode
{
protected override HbmMapping GetMappings()
{
var mapper = new ModelMapper();
mapper.Class<Child>(rc =>
{
rc.Id(x => x.Id, m => m.Generator(Generators.GuidComb));
rc.Property(x => x.Name);
rc.Component(
x => x.Component,
ekm =>
{
ekm.Property(ek => ek.Id1);
ekm.Property(ek => ek.Id2);
});
});
mapper.Class<Entity>(rc =>
{
rc.Id(x => x.Id, m => m.Generator(Generators.GuidComb));
rc.Property(x => x.Name);
rc.Bag(x => x.List, m => { }, r => r.OneToMany());
});
return mapper.CompileMappingForAllExplicitlyAddedEntities();
}
[Test]
public void ContainsOnId()
{
using (var session = OpenSession())
{
Guid clientId = Guid.NewGuid();
session.Query<Entity>().Where(x => x.List.Select(l => l.Id).Contains(clientId)).ToList();
}
}
[Test]
public void ContainsOnNameWithInnerSubquery()
{
using (var session = OpenSession())
{
var clientId = "aa";
session.Query<Entity>().Where(x =>
x.List.Where(l => session.Query<Entity>().Any(s => s.Name == l.Name)).Select(l => l.Name)
.Contains(clientId)).ToList();
}
}
[Test]
public void ContainsOnEntity()
{
using (var session = OpenSession())
{
var client = session.Load<Child>(Guid.NewGuid());
session.Query<Entity>().Where(x => x.List.Contains(client)).ToList();
}
}
[Test]
public void ContainsOnName()
{
using (var session = OpenSession())
{
var client = "aaa";
session.Query<Entity>().Where(x => x.List.Select(l => l.Name).Contains(client)).ToList();
}
}
[Test]
public void ContainsOnComponent()
{
using (var session = OpenSession())
{
var client = new CompositeKey() { Id1 = 1, Id2 = 2 };
session.Query<Entity>().Where(x => x.List.Select(l => l.Component).Contains(client)).ToList();
}
}
}
}