Пример #1
0
        public void TestOneToOneCascadeWithInverseReversed()
        {
            var conn = Utils.CreateConnection();

            conn.DropTable <PassportWithForeignKey>();
            conn.DropTable <PersonNoForeignKey>();
            conn.CreateTable <PassportWithForeignKey>();
            conn.CreateTable <PersonNoForeignKey>();

            var person = new PersonNoForeignKey {
                Name = "John", Surname = "Smith"
            };

            conn.Insert(person);

            var passport = new PassportWithForeignKey {
                PassportNumber = "JS12345678", Owner = person
            };

            conn.Insert(passport);
            conn.UpdateWithChildren(passport);

            var obtainedPassport = conn.GetWithChildren <PassportWithForeignKey>(passport.Id, recursive: true);

            Assert.NotNull(obtainedPassport);
            Assert.NotNull(obtainedPassport.Owner);
            Assert.NotNull(obtainedPassport.Owner.Passport, "Circular reference should've been solved");
            Assert.AreEqual(obtainedPassport.Id, obtainedPassport.Owner.Passport.Id);
            Assert.AreEqual(obtainedPassport.Owner.Identifier, obtainedPassport.Owner.Passport.Owner.Identifier);
            Assert.AreEqual(passport.Id, obtainedPassport.Id);
            Assert.AreEqual(person.Identifier, obtainedPassport.Owner.Identifier);
        }
        public async void TestOneToOneCascadeWithInverseAsync() {
            var conn = Utils.CreateAsyncConnection();
            await conn.DropTableAsync<PassportWithForeignKey>();
            await conn.DropTableAsync<PersonNoForeignKey>();
            await conn.CreateTableAsync<PassportWithForeignKey>();
            await conn.CreateTableAsync<PersonNoForeignKey>();

            var person = new PersonNoForeignKey { Name = "John", Surname = "Smith" };
            await conn.InsertAsync(person);

            var passport = new PassportWithForeignKey { PassportNumber = "JS12345678", Owner = person };
            await conn.InsertAsync(passport);
            await conn.UpdateWithChildrenAsync(passport);

            var obtainedPerson = await conn.GetWithChildrenAsync<PersonNoForeignKey>(person.Identifier, recursive: true);
            Assert.NotNull(obtainedPerson);
            Assert.NotNull(obtainedPerson.Passport);
            Assert.NotNull(obtainedPerson.Passport.Owner, "Circular reference should've been solved");
            Assert.AreEqual(obtainedPerson.Identifier, obtainedPerson.Passport.Owner.Identifier, "Integral reference check");
            Assert.AreEqual(obtainedPerson.Passport.Id, obtainedPerson.Passport.Owner.Passport.Id);
            Assert.AreEqual(person.Identifier, obtainedPerson.Identifier);
            Assert.AreEqual(passport.Id, obtainedPerson.Passport.Id);

            var obtainedPassport = await conn.GetWithChildrenAsync<PassportWithForeignKey>(passport.Id, recursive: true);
            Assert.NotNull(obtainedPassport);
            Assert.NotNull(obtainedPassport.Owner);
            Assert.NotNull(obtainedPassport.Owner.Passport, "Circular reference should've been solved");
            Assert.AreEqual(obtainedPassport.Id, obtainedPassport.Owner.Passport.Id);
            Assert.AreEqual(obtainedPassport.Owner.Identifier, obtainedPassport.Owner.Passport.Owner.Identifier);
            Assert.AreEqual(passport.Id, obtainedPassport.Id);
            Assert.AreEqual(person.Identifier, obtainedPassport.Owner.Identifier);
        }