コード例 #1
0
        public void Should_Query_ManyToOne_Records_With_Needing_To_Build_Join(IDbProvider db)
        {
            Trace.WriteLine(TraceObjectGraphInfo(db));

            // Setup
            var publisher = PublisherFixture.GetThirdPublisher();

            db.Create(publisher);

            var thirdBook  = BookFixture.GetThirdBook(publisher);
            var fourthBook = BookFixture.GetFourthBook(publisher);

            // Execute
            db.Create(thirdBook);
            db.Create(fourthBook);

            // Assert
            var query = db.Query <BookModel>()
                        .Where(b => b.Publisher.Id == publisher.Id);
            var actualBooks = query.ToList();

            actualBooks.Should().HaveCount(2);
            actualBooks[0].Publisher.Id.Should().Be(publisher.Id);
            actualBooks[1].Publisher.Id.Should().Be(publisher.Id);
        }
コード例 #2
0
        public void Should_Create_Records_With_OneToMany_Relationships(IDbProvider db)
        {
            Trace.WriteLine(TraceObjectGraphInfo(db));

            // Setup
            var publisher = PublisherFixture.GetSecondPublisher();

            db.Create(publisher);

            var thirdBook  = BookFixture.GetThirdBook(publisher);
            var fourthBook = BookFixture.GetFourthBook(publisher);

            db.Create(thirdBook);
            db.Create(fourthBook);

            // Execute
            var query = db.Query <PublisherModel>()
                        .Join <BookModel>().On((p, b) => b.Publisher.Id == p.Id)
                        .Where((p, b) => b.Name == fourthBook.Name);
            var publishers = query.ToList();

            // Assert
            publishers.Should().HaveCount(1);
            publishers[0].ShouldBeEquivalentTo(publisher);
        }