Example #1
0
        public void TestUpdateSetOneToOneRelationshipWithInverseForeignKey()
        {
            var conn = Utils.CreateConnection();

            conn.DropTable <O2OClassF>();
            conn.DropTable <O2OClassE>();
            conn.CreateTable <O2OClassF>();
            conn.CreateTable <O2OClassE>();

            // Use standard SQLite-Net API to create a new relationship
            var objectF = new O2OClassF
            {
                Bar = string.Format("Bar String {0}", new Random().Next(100))
            };

            conn.Insert(objectF);

            var objectE = new O2OClassE();

            conn.Insert(objectE);

            // Set the relationship using objects
            objectF.ObjectE = objectE;
            Assert.AreEqual(0, objectE.ObjectFKey);

            conn.UpdateWithChildren(objectF);

            Assert.AreEqual(objectF.Id, objectE.ObjectFKey, "Foreign key should have been refreshed");
            Assert.AreSame(objectF, objectE.ObjectF, "Inverse relationship hasn't been set");

            // Fetch the relationship
            var newObjectA = conn.Get <O2OClassE>(objectE.Id);

            Assert.AreEqual(objectF.Id, newObjectA.ObjectFKey, "Foreign key should have been refreshed in database");
        }
Example #2
0
        public void TestGetInverseOneToOneRelationshipWithExplicitKey()
        {
            var conn = Utils.CreateConnection();

            conn.DropTable <O2OClassE>();
            conn.DropTable <O2OClassF>();
            conn.CreateTable <O2OClassE>();
            conn.CreateTable <O2OClassF>();

            // Use standard SQLite-Net API to create a new relationship
            var objectF = new O2OClassF
            {
                Bar = string.Format("Bar String {0}", new Random().Next(100))
            };

            conn.Insert(objectF);

            var objectE = new O2OClassE
            {
                Foo = string.Format("Foo String {0}", new Random().Next(100))
            };

            conn.Insert(objectE);

            Assert.Null(objectF.ObjectE);

            // Fetch (yet empty) the relationship
            conn.GetChildren(objectF);
            Assert.Null(objectF.ObjectE);

            // Set the relationship using IDs
            objectE.ObjectFKey = objectF.Id;
            conn.Update(objectE);

            Assert.Null(objectF.ObjectE);

            // Fetch the relationship
            conn.GetChildren(objectF);

            Assert.NotNull(objectF.ObjectE);
            Assert.AreEqual(objectE.Foo, objectF.ObjectE.Foo);

            // Check the inverse relationship
            Assert.NotNull(objectF.ObjectE.ObjectF);
            Assert.AreEqual(objectF.Id, objectF.ObjectE.ObjectF.Id);
            Assert.AreEqual(objectF.Bar, objectF.ObjectE.ObjectF.Bar);
            Assert.AreSame(objectF, objectF.ObjectE.ObjectF);
        }