Exemple #1
0
        public void WhenCreateWithTypeThenAssignClass()
        {
            var hbm = new HbmOneToMany();

            new OneToManyMapper(typeof(MyClass), hbm, null);
            hbm.Class.Should().Not.Be.NullOrEmpty().And.Contain("MyClass");
        }
Exemple #2
0
        public void WhenForceClassRelationToIncompatibleTypeThenThrows()
        {
            var hbm    = new HbmOneToMany();
            var mapper = new OneToManyMapper(typeof(IMyInterface), hbm, null);

            Executing.This(() => mapper.Class(typeof(Whatever))).Should().Throw <ArgumentOutOfRangeException>();
        }
Exemple #3
0
        public void WhenCreateWithoutTypeThenNotThrow()
        {
            // relation using entity-name
            var hbm = new HbmOneToMany();

            Executing.This(() => new OneToManyMapper(null, hbm, null)).Should().NotThrow();
        }
Exemple #4
0
        public void OneToMany()
        {
            var hbm = new HbmOneToMany {
                @class = TypeUtils.GetClassName(mapping, typeof(TElement))
            };

            elementRelationshipAssing(hbm);
        }
Exemple #5
0
        public void CanAssignEntityName()
        {
            var hbm    = new HbmOneToMany();
            var mapper = new OneToManyMapper(typeof(MyClass), hbm, null);

            mapper.EntityName("myname");
            hbm.EntityName.Should().Be("myname");
        }
Exemple #6
0
        public void CanAssignNotFoundMode()
        {
            var hbm    = new HbmOneToMany();
            var mapper = new OneToManyMapper(typeof(MyClass), hbm, null);

            mapper.NotFound(NotFoundMode.Ignore);
            hbm.NotFoundMode.Should().Be(HbmNotFoundMode.Ignore);
        }
        public void OneToMany(Action <IOneToManyMapper> mapping)
        {
            var hbm = new HbmOneToMany {
                @class = collectionElementType.GetShortClassName(mapDoc)
            };

            mapping(new OneToManyMapper(collectionElementType, hbm, mapDoc));
            elementRelationshipAssing(hbm);
        }
Exemple #8
0
        public void CanForceClassRelation()
        {
            var hbm    = new HbmOneToMany();
            var mapper = new OneToManyMapper(typeof(IMyInterface), hbm, null);

            mapper.Class(typeof(MyClass));

            hbm.Class.Should().Contain("MyClass").And.Not.Contain("IMyInterface");
        }
Exemple #9
0
            public void Should_get_the_correct_value()
            {
                const string expected  = "System.String";
                HbmOneToMany component = new HbmOneToMany
                {
                    @class = expected + ", mscorlib"
                };
                string result = component.GetReturnType();

                result.ShouldBeEqualTo(expected);
            }
Exemple #10
0
 public OneToManyMapper(System.Type collectionElementType, HbmOneToMany oneToManyMapping, HbmMapping mapDoc)
 {
     if (oneToManyMapping == null)
     {
         throw new ArgumentNullException("oneToManyMapping");
     }
     this.collectionElementType = collectionElementType;
     if (collectionElementType != null)
     {
         oneToManyMapping.@class = collectionElementType.GetShortClassName(mapDoc);
     }
     this.oneToManyMapping = oneToManyMapping;
     this.mapDoc           = mapDoc;
 }
Exemple #11
0
        private void BindOneToMany(HbmOneToMany oneToManyMapping, OneToMany model)
        {
            model.ReferencedEntityName = GetEntityName(oneToManyMapping, mappings);

            model.IsIgnoreNotFound = oneToManyMapping.NotFoundMode == HbmNotFoundMode.Ignore;
        }
 public static string GetReturnType(this HbmOneToMany item)
 {
     return([email protected]());
 }
Exemple #13
0
        protected static void GetFksWhichAreNotPartOfPks(string outputNamespace, string tbl, Dictionary <string, FkItem> hbmFk, XElement classXe)
        {
            //----fks which are not part of pks
            if (!hbmFk.ContainsKey(tbl))
            {
                return;
            }
            var tblFks = hbmFk[tbl].ManyToOne;

            foreach (var fkName in tblFks.Keys)
            {
                //these would be FK ref to another type but its underlying table is excluded so now its just a bunch of value types
                if (Settings.DoNotReference.Contains(fkName))
                {
                    foreach (var reducedFk in tblFks[fkName])
                    {
                        var reducedFkSimpProp = GetSimplePropertyHbmXml(reducedFk,
                                                                        Globals.HbmXmlNames.PROPERTY);
                        classXe.Add(reducedFkSimpProp);
                    }
                    continue; //these need representation but not as class types
                }

                var manytoOneColumns = new List <ColumnMetadata>();
                if (!HbmOneToMany.GetManyToOneColumns(tbl, ref manytoOneColumns))
                {
                    continue;
                }

                var fkColumnsByDistinctConstraintName = manytoOneColumns.Select(x => x.constraint_name).Distinct().ToList();
                foreach (var distinctConstraintName in fkColumnsByDistinctConstraintName)
                {
                    var dMtoColumnData = tblFks[fkName].Where(
                        x =>
                        string.Equals(x.constraint_name, distinctConstraintName, Sorting.C)).ToList();

                    if (dMtoColumnData.Count <= 0)
                    {
                        continue;
                    }
                    var fkColumnXes   = new List <XElement>();
                    var fkColumnNames = new List <string>();
                    foreach (var x in dMtoColumnData)
                    {
                        x.CopyFrom(Sorting.GetFromAllColumnMetadata(x));
                        var fullColumnName = x.column_name;

                        Compose.ValidSplit(fullColumnName, 3);
                        var cn = NfString.ExtractLastWholeWord(fullColumnName, null);

                        //need to store these temp, since we are also drafting thier parent's name
                        fkColumnXes.Add(XeFactory.ColumnNode(cn, x.ToJsonString()));
                        fkColumnNames.Add(cn);
                    }

                    var fkPropertyType = new NfTypeName(Compose.ClassName(fkName, outputNamespace));
                    var fkPropertyName = Compose.ManyToOnePropertyName(Compose.ClassName(fkName, outputNamespace),
                                                                       fkColumnNames.ToArray());

                    var manyToOneXe = XeFactory.ManyToOneNode(fkPropertyName, fkPropertyType.AssemblyQualifiedName);
                    foreach (var fkXe in fkColumnXes)
                    {
                        manyToOneXe.Add(fkXe);
                    }

                    classXe.Add(manyToOneXe);
                }
            }
        }