1+ using System . Linq ;
2+ using NHibernate . Linq ;
3+ using NUnit . Framework ;
4+
5+ namespace NHibernate . Test . NHSpecificTest . NH3755
6+ {
7+ [ TestFixture ]
8+ public class Fixture : BugTestCase
9+ {
10+ protected override void OnSetUp ( )
11+ {
12+ using ( var session = OpenSession ( ) )
13+ using ( var transaction = session . BeginTransaction ( ) )
14+ {
15+ var c = new Circle { Property1 = "Circle1" , Property2 = "Circle2" , Property3 = "Circle3" } ;
16+ session . Save ( c ) ;
17+
18+ var s = new Square { Property1 = "Square1" , Property2 = "Square2" , Property3 = "Square3" } ;
19+ session . Save ( c ) ;
20+ session . Save ( s ) ;
21+
22+ var sc1 = new ShapeContainer { Name = "Circle" , Shape = c } ;
23+ var sc2 = new ShapeContainer { Name = "Square" , Shape = s } ;
24+
25+ session . Save ( sc1 ) ;
26+ session . Save ( sc2 ) ;
27+
28+ session . Flush ( ) ;
29+ transaction . Commit ( ) ;
30+ }
31+ }
32+
33+ protected override void OnTearDown ( )
34+ {
35+ using ( var session = OpenSession ( ) )
36+ using ( var transaction = session . BeginTransaction ( ) )
37+ {
38+ session . Delete ( "from System.Object" ) ;
39+
40+ session . Flush ( ) ;
41+ transaction . Commit ( ) ;
42+ }
43+ }
44+
45+ [ Test , KnownBug ( "NH-3755" ) ]
46+ public void TestCompositeProxy ( )
47+ {
48+ using ( var session = OpenSession ( ) )
49+ using ( session . BeginTransaction ( ) )
50+ {
51+ var result1 = ( from e in session . Query < ShapeContainer > ( )
52+ where e . Name == "Circle"
53+ select e ) . ToList ( ) ;
54+
55+ var result2 = ( from e in session . Query < ShapeContainer > ( )
56+ where e . Name == "Square"
57+ select e ) . ToList ( ) ;
58+
59+ var circle = ( ICircle ) result1 [ 0 ] . Shape ;
60+ var square = ( ISquare ) result2 [ 0 ] . Shape ;
61+
62+ Assert . That ( circle . Property1 , Is . Not . Null ) ;
63+ Assert . That ( circle . Property2 , Is . Not . Null ) ;
64+ Assert . That ( circle . Property3 , Is . Not . Null ) ;
65+
66+ Assert . That ( square . Property1 , Is . Not . Null ) ;
67+ Assert . That ( square . Property2 , Is . Not . Null ) ;
68+ Assert . That ( square . Property3 , Is . Not . Null ) ;
69+ }
70+ }
71+ }
72+ }
0 commit comments