Ejemplo n.º 1
0
        public void write_then_read_from_complex_entity_types()
        {
            using (var documentStore = GetDocumentStore())
            {
                new Answers_ByAnswerEntity().Execute(documentStore);
                new Answers_ByAnswerEntityTransformer().Execute(documentStore);
                new Votes_ByAnswerEntity().Execute(documentStore);
                new Votes_ByAnswerEntityTransfotmer().Execute(documentStore);

                string answerId = CreateEntities(documentStore);
                // Working
                using (IDocumentSession session = documentStore.OpenSession())
                {
                    AnswerEntity answerInfo = session.Query <Answer, Answers_ByAnswerEntity>()
                                              .Customize(x => x.WaitForNonStaleResultsAsOfNow())
                                              .Where(x => x.Id == answerId)
                                              .TransformWith <Answers_ByAnswerEntityTransformer, AnswerEntity>()
                                              .SingleOrDefault();
                    Assert.NotNull(answerInfo);
                    Assert.NotNull(answerInfo.Question);
                }
                // Failing
                using (IDocumentSession session = documentStore.OpenSession())
                {
                    AnswerVoteEntity[] votes = session.Query <AnswerVote, Votes_ByAnswerEntity>()
                                               .Customize(x => x.WaitForNonStaleResultsAsOfNow())
                                               .Where(x => x.AnswerId == answerId)
                                               .TransformWith <Votes_ByAnswerEntityTransfotmer, AnswerVoteEntity>()
                                               .ToArray();
                    Assert.NotNull(votes);
                    Assert.True(votes.Length == 2);
                    Assert.NotNull(votes[0].Answer);
                    Assert.True(votes[0].Answer.Id == answerId);
                    Assert.NotNull(votes[1].Answer);
                    Assert.True(votes[1].Answer.Id == answerId);
                }
            }
        }
Ejemplo n.º 2
0
        public void object_id_should_not_be_null_after_loaded_from_transformation()
        {
            using (var documentStore = GetDocumentStore())
            {
                new Answers_ByAnswerEntity().Execute(documentStore);
                new Answers_ByAnswerEntityTransformer().Execute(documentStore);

                const string questionId = @"question/259";
                string       answerId   = CreateEntities(documentStore);

                using (IDocumentSession session = documentStore.OpenSession())
                {
                    AnswerEntity answerInfo = session.Query <Answer, Answers_ByAnswerEntity>()
                                              .Customize(x => x.WaitForNonStaleResultsAsOfNow())
                                              .Where(x => x.Id == answerId)
                                              .TransformWith <Answers_ByAnswerEntityTransformer, AnswerEntity>()
                                              .SingleOrDefault();
                    Assert.NotNull(answerInfo);
                    Assert.NotNull(answerInfo.Question);
                    Assert.NotNull(answerInfo.Question.Id);
                    Assert.True(answerInfo.Question.Id == questionId);
                }
            }
        }
Ejemplo n.º 3
0
        private static string CreateEntities(IDocumentStore documentStore)
        {
            const string questionId = @"question/259";
            const string answerId   = @"answer/540";

            using (IDocumentSession session = documentStore.OpenSession())
            {
                var user = new User {
                    Id = @"user/222", DisplayName = "John Doe"
                };
                session.Store(user);

                var question = new Question
                {
                    Id      = questionId,
                    Title   = "How to do this in RavenDb?",
                    Content = "I'm trying to find how to model documents for better DDD support.",
                    UserId  = @"user/222"
                };
                session.Store(question);

                var answer = new AnswerEntity
                {
                    Id       = answerId,
                    Question = question,
                    Content  = "This is doable",
                    UserId   = user.Id
                };

                session.Store(new Answer
                {
                    Id         = answer.Id,
                    UserId     = answer.UserId,
                    QuestionId = answer.Question.Id,
                    Content    = answer.Content
                });

                var vote1 = new AnswerVoteEntity {
                    Id = "votes/1", Answer = answer, QuestionId = questionId, Delta = 2
                };
                session.Store(new AnswerVote
                {
                    QuestionId = vote1.QuestionId,
                    AnswerId   = vote1.Answer.Id,
                    Delta      = vote1.Delta
                });

                var vote2 = new AnswerVoteEntity {
                    Id = "votes/2", Answer = answer, QuestionId = questionId, Delta = 3
                };
                session.Store(new AnswerVote
                {
                    QuestionId = vote2.QuestionId,
                    AnswerId   = vote2.Answer.Id,
                    Delta      = vote2.Delta
                });

                session.SaveChanges();
            }
            return(answerId);
        }
Ejemplo n.º 4
0
        public void will_work_normally_when_querying_multiple_times()
        {
            using (var documentStore = GetDocumentStore())
            {
                new Answers_ByAnswerEntity().Execute(documentStore);
                new Answers_ByAnswerEntityTransformer().Execute(documentStore);

                const string Content = "This is doable";
                const string UserId  = @"user/222";

                const string answerId = @"answer/540";
                using (IDocumentSession session = documentStore.OpenSession())
                {
                    var user = new User {
                        Id = @"user/222", DisplayName = "John Doe"
                    };
                    session.Store(user);


                    var answer = new AnswerEntity
                    {
                        Id       = answerId,
                        Question = null,
                        Content  = "This is doable",
                        UserId   = user.Id
                    };

                    session.Store(new Answer
                    {
                        Id         = answer.Id,
                        UserId     = answer.UserId,
                        QuestionId = "",
                        Content    = answer.Content
                    });

                    session.SaveChanges();
                }
                // Working
                using (IDocumentSession session = documentStore.OpenSession())
                {
                    AnswerEntity answerInfo = session.Query <Answer, Answers_ByAnswerEntity>()
                                              .Customize(x => x.WaitForNonStaleResultsAsOfNow())
                                              .Where(x => x.UserId == UserId && x.Content == Content)
                                              .TransformWith <Answers_ByAnswerEntityTransformer, AnswerEntity>()
                                              .SingleOrDefault();
                    Assert.NotNull(answerInfo);

                    AnswerEntity answerInfo2 = session.Query <Answer, Answers_ByAnswerEntity>()
                                               .Customize(x => x.WaitForNonStaleResultsAsOfNow())
                                               .Where(x => x.UserId == UserId && x.Content == Content)
                                               .TransformWith <Answers_ByAnswerEntityTransformer, AnswerEntity>()
                                               .SingleOrDefault();
                    Assert.NotNull(answerInfo2);
                }
                // Failing
                using (IDocumentSession session = documentStore.OpenSession())
                {
                    AnswerEntity answerInfo = session.Query <Answer, Answers_ByAnswerEntity>()
                                              .Customize(x => x.WaitForNonStaleResultsAsOfNow())
                                              .Where(x => x.UserId == UserId && x.Content == Content)
                                              .TransformWith <Answers_ByAnswerEntityTransformer, AnswerEntity>()
                                              .SingleOrDefault();
                    Assert.NotNull(answerInfo);
                }
            }
        }