Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 6
0
        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);
            }
        }