Example #1
0
        public void PersistBehaviors()
        {
            {
                var ea1 = new EntityA();
                TestBase.TestSerialization(ea1);

                var eb1 = new EntityB();
                TestBase.TestSerialization(eb1);

                var eb2 = new EntityB {
                    A = ea1
                };
                TestBase.TestSerialization(eb2);

                using (var em = Emf.CreateEntityManager())
                {
                    em.Persist(ea1);
                    em.Persist(eb1);
                    em.Persist(eb2);
                }

                using (var em = Emf.CreateEntityManager())
                {
                    Assert.AreEqual(1, em.Fetch <EntityA>().Count());
                    Assert.AreEqual(2, em.Fetch <EntityB>().Count());

                    var _ea1 = em.Find <EntityA>(ea1.RowKey);
                    Assert.AreEqual(ea1, _ea1);

                    var _eb1 = em.Find <EntityB>(eb1.Key);
                    Assert.AreEqual(eb1, _eb1);

                    var _eb2 = em.Find <EntityB>(eb2.Key);
                    Assert.AreEqual(eb2, _eb2);

                    var _ea2 = em.Find <EntityA>(eb2.A.RowKey);
                    Assert.AreEqual(ea1, _ea2);
                }

                TestBase.ClearNamespace();

                using (var em = Emf.CreateEntityManager())
                {
                    em.Persist(ea1);
                }

                using (var em = Emf.CreateEntityManager())
                {
                    em.Persist(eb1);
                    em.Persist(eb2);
                }

                using (var em = Emf.CreateEntityManager())
                {
                    Assert.AreEqual(2, em.Fetch <EntityA>().Count());
                    Assert.AreEqual(2, em.Fetch <EntityB>().Count());

                    var _ea1 = em.Find <EntityA>(ea1.RowKey);
                    Assert.AreEqual(ea1, _ea1);

                    var _eb1 = em.Find <EntityB>(eb1.Key);
                    Assert.AreEqual(eb1, _eb1);

                    var _eb2 = em.Find <EntityB>(eb2.Key);
                    Assert.AreEqual(eb2, _eb2);

                    var _ea2 = em.Find <EntityA>(eb2.A.RowKey);
                    Assert.AreEqual(eb2.A, _ea2);
                }

                TestBase.ClearNamespace();

                using (var em = Emf.CreateEntityManager())
                {
                    var ida = new HashSet <string>();
                    var idb = new HashSet <string>();

                    em.Persist(ea1, Behaviors.CreateLazy);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateLazy);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateLazy);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    em.Persist(ea1, Behaviors.CreateLazy);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateLazy);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateLazy);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    Assert.AreEqual(1, ida.Count);
                    Assert.AreEqual(2, idb.Count);

                    em.Flush();

                    Assert.AreEqual(1, em.Fetch <EntityA>().Count());
                    Assert.AreEqual(2, em.Fetch <EntityB>().Count());
                }

                TestBase.ClearNamespace();

                using (var em = Emf.CreateEntityManager())
                {
                    var ida = new HashSet <string>();
                    var idb = new HashSet <string>();

                    em.Persist(ea1, Behaviors.CreateAlways);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateAlways);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateAlways);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    em.Persist(ea1, Behaviors.CreateAlways);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateAlways);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateAlways);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    Assert.AreEqual(4, ida.Count);
                    Assert.AreEqual(4, idb.Count);

                    em.Flush();

                    Assert.AreEqual(4, em.Fetch <EntityA>().Count());
                    Assert.AreEqual(4, em.Fetch <EntityB>().Count());
                }

                TestBase.ClearNamespace();

                using (var em = Emf.CreateEntityManager())
                {
                    var ida = new HashSet <string>();
                    var idb = new HashSet <string>();

                    em.Persist(ea1, Behaviors.CreateNew);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateNew);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateNew);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    em.Persist(ea1, Behaviors.CreateNew);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateNew);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateNew);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    Assert.AreEqual(1, ida.Count);
                    Assert.AreEqual(2, idb.Count);

                    em.Flush();

                    Assert.AreEqual(1, em.Fetch <EntityA>().Count());
                    Assert.AreEqual(2, em.Fetch <EntityB>().Count());
                }
            }

            TestBase.ClearNamespace();

            {
                var ea1 = new EntityA();
                TestBase.TestSerialization(ea1);

                var eb1 = new EntityB();
                TestBase.TestSerialization(eb1);

                var eb2 = new EntityB {
                    A = ea1
                };
                TestBase.TestSerialization(eb2);

                using (var em = Emf.CreateEntityManager())
                {
                    var ida = new HashSet <string>();
                    var idb = new HashSet <string>();

                    em.Persist(ea1, Behaviors.CreateLazy);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateLazy);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateLazy);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    em.Persist(ea1, Behaviors.CreateLazy);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateLazy);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateLazy);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    Assert.AreEqual(1, ida.Count);
                    Assert.AreEqual(2, idb.Count);

                    em.Flush();

                    Assert.AreEqual(1, em.Fetch <EntityA>().Count());
                    Assert.AreEqual(2, em.Fetch <EntityB>().Count());
                }
            }

            TestBase.ClearNamespace();

            {
                var ea1 = new EntityA();
                TestBase.TestSerialization(ea1);

                var eb1 = new EntityB();
                TestBase.TestSerialization(eb1);

                var eb2 = new EntityB {
                    A = ea1
                };
                TestBase.TestSerialization(eb2);

                using (var em = Emf.CreateEntityManager())
                {
                    var ida = new HashSet <string>();
                    var idb = new HashSet <string>();

                    em.Persist(ea1, Behaviors.CreateAlways);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateAlways);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateAlways);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    em.Persist(ea1, Behaviors.CreateAlways);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateAlways);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateAlways);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    Assert.AreEqual(4, ida.Count);
                    Assert.AreEqual(4, idb.Count);

                    em.Flush();

                    Assert.AreEqual(4, em.Fetch <EntityA>().Count());
                    Assert.AreEqual(4, em.Fetch <EntityB>().Count());
                }
            }

            TestBase.ClearNamespace();

            {
                var ea1 = new EntityA();
                TestBase.TestSerialization(ea1);

                var eb1 = new EntityB();
                TestBase.TestSerialization(eb1);

                var eb2 = new EntityB {
                    A = ea1
                };
                TestBase.TestSerialization(eb2);

                using (var em = Emf.CreateEntityManager())
                {
                    var ida = new HashSet <string>();
                    var idb = new HashSet <string>();

                    em.Persist(ea1, Behaviors.CreateNew);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateNew);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateNew);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    em.Persist(ea1, Behaviors.CreateNew);
                    ida.Add(ea1.RowKey);

                    em.Persist(eb1, Behaviors.CreateNew);
                    idb.Add(eb1.Key.Row);

                    em.Persist(eb2, Behaviors.CreateNew);
                    idb.Add(eb2.Key.Row);
                    ida.Add(eb2.A.RowKey);

                    Assert.AreEqual(1, ida.Count);
                    Assert.AreEqual(2, idb.Count);

                    em.Flush();

                    Assert.AreEqual(1, em.Fetch <EntityA>().Count());
                    Assert.AreEqual(2, em.Fetch <EntityB>().Count());
                }
            }
        }