public void UniqueReferenceCascadeDelete() { foreach (bool useDatabaseNullSemantics in new[] { false, true }) { using (var container = new RhetosTestContainer()) { container.OverrideConfiguration(("EntityFramework.UseDatabaseNullSemantics", useDatabaseNullSemantics)); var repository = container.Resolve <Common.DomRepository>(); var p1 = new TestBrowse.ParentBase { Name = "p1" }; var p2 = new TestBrowse.ParentBase { Name = "p2" }; repository.TestBrowse.ParentBase.Insert(p1, p2); var pur1 = new TestBrowse.ParentUniqueReference { ID = p1.ID, Name3 = "pur1" }; var pur2 = new TestBrowse.ParentUniqueReference { ID = p2.ID, Name3 = "pur2" }; repository.TestBrowse.ParentUniqueReference.Insert(pur1, pur2); var urc1 = new TestBrowse.UniqueReferenceChild { ID = p1.ID, Name4 = "urc1" }; var urc2 = new TestBrowse.UniqueReferenceChild { ID = p2.ID, Name4 = "urc2" }; repository.TestBrowse.UniqueReferenceChild.Insert(urc1, urc2); Func <string> report = () => TestUtility.DumpSorted( repository.TestBrowse.ParentBase.Query(new[] { p1.ID, p2.ID }).ToList(), item => item.Name + "-" + item.Extension_ParentUniqueReference?.Name3 + "-" + item.Extension_ParentUniqueReference?.Extension_UniqueReferenceChild.Name4); Assert.AreEqual("p1-pur1-urc1, p2-pur2-urc2", report()); repository.TestBrowse.ParentUniqueReference.Delete(pur1); Assert.AreEqual("p1--, p2-pur2-urc2", report()); repository.TestBrowse.ParentBase.Delete(p1); Assert.AreEqual("p2-pur2-urc2", report()); TestUtility.ShouldFail <Rhetos.UserException>( () => repository.TestBrowse.ParentBase.Delete(p2), "It is not allowed to delete a record that is referenced by other records."); } } }
public void UniqueReference() { using (var scope = TestScope.Create()) { var repository = scope.Resolve <Common.DomRepository>(); var p = new TestBrowse.ParentBase { Name = "p" }; repository.TestBrowse.ParentBase.Insert(p); var pur = new TestBrowse.ParentUniqueReference { ID = p.ID, Name3 = "pur" }; repository.TestBrowse.ParentUniqueReference.Insert(pur); Assert.AreEqual("p-pur", repository.TestBrowse.ParentUniqueReferenceBrowse1.Query(item => item.ID == p.ID).Select(item => item.Name + "-" + item.Name3).Single()); Assert.AreEqual("p-pur", repository.TestBrowse.ParentUniqueReferenceBrowse2.Query(item => item.ID == p.ID).Select(item => item.Name + "-" + item.Name3).Single()); } }