public void TestGetOneToManyArray() { var conn = Utils.CreateConnection(); conn.DropTable<O2MClassE>(); conn.DropTable<O2MClassF>(); conn.CreateTable<O2MClassE>(); conn.CreateTable<O2MClassF>(); // Use standard SQLite-Net API to create the objects var objectsF = new[] { new O2MClassF { Foo = string.Format("1- Foo String {0}", new Random().Next(100)) }, new O2MClassF { Foo = string.Format("2- Foo String {0}", new Random().Next(100)) }, new O2MClassF { Foo = string.Format("3- Foo String {0}", new Random().Next(100)) }, new O2MClassF { Foo = string.Format("4- Foo String {0}", new Random().Next(100)) } }; conn.InsertAll(objectsF); var objectE = new O2MClassE(); conn.Insert(objectE); Assert.Null(objectE.FObjects); // Fetch (yet empty) the relationship conn.GetChildren(objectE); Assert.NotNull(objectE.FObjects); Assert.AreEqual(0, objectE.FObjects.Length); // Set the relationship using IDs foreach (var objectB in objectsF) { objectB.ClassEKey = objectE.Id; conn.Update(objectB); } Assert.NotNull(objectE.FObjects); Assert.AreEqual(0, objectE.FObjects.Length); // Fetch the relationship conn.GetChildren(objectE); Assert.NotNull(objectE.FObjects); Assert.AreEqual(objectsF.Length, objectE.FObjects.Length); var foos = objectsF.Select(objectF => objectF.Foo).ToList(); foreach (var objectF in objectE.FObjects) { Assert.IsTrue(foos.Contains(objectF.Foo)); } }
public void TestUpdateSetOneToManyArray() { var conn = Utils.CreateConnection(); conn.DropTable <O2MClassE>(); conn.DropTable <O2MClassF>(); conn.CreateTable <O2MClassE>(); conn.CreateTable <O2MClassF>(); // Use standard SQLite-Net API to create the objects var objectsF = new[] { new O2MClassF { Foo = string.Format("1- Foo String {0}", new Random().Next(100)) }, new O2MClassF { Foo = string.Format("2- Foo String {0}", new Random().Next(100)) }, new O2MClassF { Foo = string.Format("3- Foo String {0}", new Random().Next(100)) }, new O2MClassF { Foo = string.Format("4- Foo String {0}", new Random().Next(100)) } }; conn.InsertAll(objectsF); var objectE = new O2MClassE(); conn.Insert(objectE); Assert.Null(objectE.FObjects); objectE.FObjects = objectsF; foreach (var objectF in objectsF) { Assert.AreEqual(0, objectF.ClassEKey, "Foreign keys shouldn't have been updated yet"); } conn.UpdateWithChildren(objectE); foreach (var objectF in objectE.FObjects) { Assert.AreEqual(objectE.Id, objectF.ClassEKey, "Foreign keys haven't been updated yet"); // Check database values var newObjectF = conn.Get <O2MClassB>(objectF.Id); Assert.AreEqual(objectE.Id, newObjectF.ClassAKey, "Database stored value is not correct"); } }
public void TestUpdateSetOneToManyArray() { var conn = Utils.CreateConnection(); conn.DropTable<O2MClassE>(); conn.DropTable<O2MClassF>(); conn.CreateTable<O2MClassE>(); conn.CreateTable<O2MClassF>(); // Use standard SQLite-Net API to create the objects var objectsF = new[] { new O2MClassF { Foo = string.Format("1- Foo String {0}", new Random().Next(100)) }, new O2MClassF { Foo = string.Format("2- Foo String {0}", new Random().Next(100)) }, new O2MClassF { Foo = string.Format("3- Foo String {0}", new Random().Next(100)) }, new O2MClassF { Foo = string.Format("4- Foo String {0}", new Random().Next(100)) } }; conn.InsertAll(objectsF); var objectE = new O2MClassE(); conn.Insert(objectE); Assert.Null(objectE.FObjects); objectE.FObjects = objectsF; foreach (var objectF in objectsF) { Assert.AreEqual(0, objectF.ClassEKey, "Foreign keys shouldn't have been updated yet"); } conn.UpdateWithChildren(objectE); foreach (var objectF in objectE.FObjects) { Assert.AreEqual(objectE.Id, objectF.ClassEKey, "Foreign keys haven't been updated yet"); // Check database values var newObjectF = conn.Get<O2MClassB>(objectF.Id); Assert.AreEqual(objectE.Id, newObjectF.ClassAKey, "Database stored value is not correct"); } }