private static IEntity GetRelatedEntity(AssociationProperty associationProperty) { //foreach (IEntity e in associationProperty.Association.Entity.EntityManager.Entities) //{ // if (e.EntityKeyName == associationProperty.ForeignProperty.Entity.EntityKeyName) return e; //} return associationProperty.Association.Entity; }
public void AssociationProperty_1_n_Test() { var subject = new AssociationProperty <A, B>("1A - nB", AssociationMultiplicity.Single, AssociationMultiplicity.Multiple); A a1 = new A(), a2 = new A(), a3 = new A(); B b1 = new B(), b2 = new B(), b3 = new B(); subject.SetOrAdd(a1, b1); subject.SetOrAdd(a1, b2); subject.SetOrAdd(a1, b3); CollectionAssert.AreEqual((new B[] { b1, b2, b3 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); subject.SetOrAdd(a3, b3); CollectionAssert.AreEqual((new B[] { b1, b2 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { b3 }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { a3 }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); subject.Remove(a1, b2); CollectionAssert.AreEqual((new B[] { b1 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { b3 }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { a3 }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); subject.SetOrAdd(null, b3); CollectionAssert.AreEqual((new B[] { b1 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); subject.GetTargetCollectionFor(a1).Clear(); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); }
public void AssociationProperty_1_n_Test() { var subject = new AssociationProperty<A, B>("1A - nB", AssociationMultiplicity.Single, AssociationMultiplicity.Multiple); A a1 = new A(), a2 = new A(), a3 = new A(); B b1 = new B(), b2 = new B(), b3 = new B(); subject.SetOrAdd(a1, b1); subject.SetOrAdd(a1, b2); subject.SetOrAdd(a1, b3); CollectionAssert.AreEqual((new B[] { b1, b2, b3 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); subject.SetOrAdd(a3, b3); CollectionAssert.AreEqual((new B[] { b1, b2 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { b3 }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { a3 }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); subject.Remove(a1, b2); CollectionAssert.AreEqual((new B[] { b1 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { b3 }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { a3 }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); subject.SetOrAdd(null, b3); CollectionAssert.AreEqual((new B[] { b1 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); subject.GetTargetCollectionFor(a1).Clear(); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a3).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b3).ToList()); }
public void AssociationProperty_1_1_Test() { var subject = new AssociationProperty <A, B>("1A - 1B", AssociationMultiplicity.Single, AssociationMultiplicity.Single); A a1 = new A(), a2 = new A(), a3 = new A(); B b1 = new B(), b2 = new B(), b3 = new B(); Assert.AreEqual(0, subject.GetTargetCollectionFor(a1).Count); Assert.AreEqual(0, subject.GetSourceCollectionFor(b1).Count); Assert.AreEqual(0, subject.GetTargetCollectionFor(a2).Count); Assert.AreEqual(0, subject.GetSourceCollectionFor(b2).Count); subject.SetOrAdd(a1, b1); subject.SetOrAdd(a2, b2); CollectionAssert.AreEqual((new B[] { b1 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { b2 }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { a2 }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); subject.SetOrAdd(a1, b2); CollectionAssert.AreEqual((new B[] { b2 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); subject.SetOrAdd(a1, null); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); subject.SetOrAdd(a1, b1); subject.SetOrAdd(a2, b1); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a2 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { b1 }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); subject.SetOrAdd(null, b1); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); }
public void AssociationProperty_1_1_Test() { var subject = new AssociationProperty<A, B>("1A - 1B", AssociationMultiplicity.Single, AssociationMultiplicity.Single); A a1 = new A(), a2 = new A(), a3 = new A(); B b1 = new B(), b2 = new B(), b3 = new B(); Assert.AreEqual(0, subject.GetTargetCollectionFor(a1).Count); Assert.AreEqual(0, subject.GetSourceCollectionFor(b1).Count); Assert.AreEqual(0, subject.GetTargetCollectionFor(a2).Count); Assert.AreEqual(0, subject.GetSourceCollectionFor(b2).Count); subject.SetOrAdd(a1, b1); subject.SetOrAdd(a2, b2); CollectionAssert.AreEqual((new B[] { b1 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { b2 }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { a2 }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); subject.SetOrAdd(a1, b2); CollectionAssert.AreEqual((new B[] { b2 }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { a1 }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); subject.SetOrAdd(a1, null); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); subject.SetOrAdd(a1, b1); subject.SetOrAdd(a2, b1); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { a2 }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { b1 }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); subject.SetOrAdd(null, b1); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a1).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b1).ToList()); CollectionAssert.AreEqual((new B[] { }).ToList(), subject.GetTargetCollectionFor(a2).ToList()); CollectionAssert.AreEqual((new A[] { }).ToList(), subject.GetSourceCollectionFor(b2).ToList()); }
internal void Add(Table table, ForeignKey foreignKey) { Association fromAssociation = new Association(); AssociationProperty associationProperty = foreignKey.AssociationProperty; if (associationProperty == null) { // Create the default association property associationProperty = new AssociationProperty(); } // Figure out the assocation name bool isUnique = false; int count = 0; while (!isUnique) { fromAssociation.Name = string.Format(CultureInfo.InvariantCulture, "{0}_{1}{2}", NameHelper.GetTypeName(foreignKey.ToTable), NameHelper.GetTypeName(table), count > 0 ? count.ToString(System.Globalization.CultureInfo.InvariantCulture) : string.Empty); isUnique = !names.Contains(fromAssociation.Name); count++; } names.Add(fromAssociation.Name); string baseName = GetMemberName(table, foreignKey.ToTable, false); // Set FROM table association properties if (associationProperty.Parent.Name == null) { // Automatically create the name fromAssociation.Member = baseName; } else { fromAssociation.Member = associationProperty.Parent.Name; //fromAssociation.Storage = "_" + baseName; var members = GetMembersOfTable(table); members.Add(fromAssociation.Member); } // AccessModifier="Internal" Modifier="NewVirtual" fromAssociation.ThisKey = foreignKey.FromColumnsToString(); fromAssociation.OtherKey = foreignKey.ToColumnsToString(); fromAssociation.Type = NameHelper.GetTypeName(foreignKey.ToTable); fromAssociation.IsForeignKey = true; fromAssociation.AccessModifier = associationProperty.Parent.Access; fromAssociation.Modifier = associationProperty.Parent.InheritanceModifier; AddAssociation(table.Name, fromTableAssociations, fromAssociation); if (associationProperty.Child != null) { // Create TO table association Association toAssociation = new Association(); toAssociation.Name = fromAssociation.Name; baseName = GetMemberName(foreignKey.ToTable, table, true); if (associationProperty.Child.Name == null) { // Automatically create the name toAssociation.Member = baseName; } else { toAssociation.Member = associationProperty.Child.Name; //toAssociation.Storage = "_" + baseName; var members = GetMembersOfTable(foreignKey.ToTable); members.Add(toAssociation.Member); } toAssociation.ThisKey = foreignKey.ToColumnsToString(); toAssociation.OtherKey = foreignKey.FromColumnsToString(); toAssociation.Type = NameHelper.GetTypeName(table); toAssociation.AccessModifier = associationProperty.Child.Access; toAssociation.Modifier = associationProperty.Child.InheritanceModifier; AddAssociation(foreignKey.ToTable.Name, toTableAssociations, toAssociation); } }