public void BindSimpleValue(HbmManyToOne manyToOneMapping, string propertyPath, bool isNullable)
        {
            ColumnsBinder binder = new ColumnsBinder(value, Mappings);

            object[] columnsAndFormulas = manyToOneMapping.ColumnsAndFormulas.ToArray();

            if (columnsAndFormulas.Length > 0)
            {
                this.AddColumnsAndOrFormulas(binder, columnsAndFormulas, isNullable);
            }
            else
            {
                // No formulas or columns, so add default column
                binder.Bind(new HbmColumn()
                {
                    name             = mappings.NamingStrategy.PropertyToColumnName(propertyPath),
                    notnull          = manyToOneMapping.notnull,
                    notnullSpecified = manyToOneMapping.notnullSpecified,
                    unique           = manyToOneMapping.unique,
                    uniqueSpecified  = true,
                    uniquekey        = manyToOneMapping.uniquekey,
                    index            = manyToOneMapping.index
                }, isNullable);
            }
        }
        private void BindManyToOne(HbmManyToOne manyToOneMapping, ManyToOne model, string defaultColumnName, bool isNullable)
        {
            new ValuePropertyBinder(model, Mappings).BindSimpleValue(manyToOneMapping, defaultColumnName, isNullable);
            InitOuterJoinFetchSetting(manyToOneMapping, model);
            InitLaziness(manyToOneMapping.Lazy, model, true);

            var ukName = !string.IsNullOrEmpty(manyToOneMapping.propertyref) ? manyToOneMapping.propertyref : null;
            if (ukName != null)
                model.ReferencedPropertyName = ukName;

            model.ReferencedEntityName = GetEntityName(manyToOneMapping, mappings);
            model.IsIgnoreNotFound = manyToOneMapping.NotFoundMode == HbmNotFoundMode.Ignore;

            if (ukName != null && !model.IsIgnoreNotFound)
            {
                AddManyToOneSecondPass(model);
            }

            if (manyToOneMapping.unique)
            {
                model.IsLogicalOneToOne = true;
            }

            BindForeignKey(manyToOneMapping.foreignkey, model);
        }
Example #3
0
        public void ManyToOne <TProperty>(Expression <Func <TComponent, TProperty> > property) where TProperty : class
        {
            var hbm = new HbmManyToOne {
                name = TypeUtils.DecodeMemberAccessExpression(property).Name,
            };

            AddProperty(hbm);
        }
Example #4
0
 private static HbmColumn Column(this HbmManyToOne item)
 {
     if (item.Items == null || item.Items.IsEmpty())
     {
         return(null);
     }
     return((HbmColumn)item.Items[0]);
 }
Example #5
0
        private void InitOuterJoinFetchSetting(HbmManyToOne manyToOneMapping, ManyToOne model)
        {
            FetchMode fetchStyle = !manyToOneMapping.fetchSpecified
                                                                                                                        ? (!manyToOneMapping.outerjoinSpecified ? FetchMode.Default : GetFetchStyle(manyToOneMapping.outerjoin))
                                                                                                                        : GetFetchStyle(manyToOneMapping.fetch);

            model.FetchMode = fetchStyle;
        }
Example #6
0
 public static string GetUniqueIndex(this HbmManyToOne item)
 {
     if (item.index != null)
     {
         return(item.index);
     }
     return(item.Column().GetUniqueIndex());
 }
Example #7
0
        public static string GetColumnName(this HbmManyToOne item)
        {
            if (item.column != null && !item.column.IsEmpty())
            {
                return(item.column);
            }

            return(item.Column().name);
        }
Example #8
0
        public void AssignEntityName()
        {
            var hbmMapping          = new HbmMapping();
            var hbm                 = new HbmManyToOne();
            IManyToOneMapper mapper = new ManyToOneMapper(null, hbm, hbmMapping);

            mapper.EntityName("MyEntity");
            Assert.That(hbm.EntityName, Is.EqualTo("MyEntity"));
        }
        public void WhenForceClassRelationToIncompatibleTypeThenThrows()
        {
            var hbmMapping = new HbmMapping();
            var member     = typeof(MyClass).GetProperty("TheOtherRelation");
            var mapping    = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(member, mapping, hbmMapping);

            Executing.This(() => mapper.Class(typeof(Whatever))).Should().Throw <ArgumentOutOfRangeException>();
        }
        public void AutoCleanUnsupportedCascadeStyle()
        {
            var hbmMapping = new HbmMapping();
            var hbm        = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(null, hbm, hbmMapping);

            mapper.Cascade(Mapping.ByCode.Cascade.Persist | Mapping.ByCode.Cascade.DeleteOrphans | Mapping.ByCode.Cascade.Remove);
            hbm.cascade.Split(',').Select(w => w.Trim()).All(w => w.Satisfy(cascade => !cascade.Contains("orphan")));
        }
        public void ManyToOne(MemberInfo property, Action <IManyToOneMapper> mapping)
        {
            var hbm = new HbmManyToOne {
                name = property.Name
            };

            mapping(new ManyToOneMapper(property, hbm, mapDoc));
            AddProperty(hbm);
        }
        public void AssignCascadeStyle()
        {
            var hbmMapping = new HbmMapping();
            var hbm        = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(null, hbm, hbmMapping);

            mapper.Cascade(Mapping.ByCode.Cascade.Persist | Mapping.ByCode.Cascade.Remove);
            hbm.cascade.Split(',').Select(w => w.Trim()).Should().Contain("persist").And.Contain("delete");
        }
Example #13
0
        public void ManyToOne <TProperty>(Expression <Func <TEntity, TProperty> > property) where TProperty : class
        {
            var memberInfo = TypeUtils.DecodeMemberAccessExpression(property);
            var hbm        = new HbmManyToOne {
                name = memberInfo.Name
            };

            AddProperty(hbm);
        }
        public void CanSetInsert()
        {
            var hbmMapping = new HbmMapping();
            var member     = typeof(MyClass).GetProperty("Relation");
            var hbm        = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(member, hbm, hbmMapping);

            mapper.Insert(false);
            hbm.insert.Should().Be.False();
        }
Example #15
0
            public void Should_get_null_given_null_index_and_Items_index()
            {
                HbmManyToOne manyToOne = new HbmManyToOne
                {
                    Items = new object[] { new HbmColumn() }
                };
                string result = manyToOne.GetUniqueIndex();

                result.ShouldBeNull();
            }
Example #16
0
            public void Should_get_null_if_sqltype_is_not_a_string_or_array_type()
            {
                HbmManyToOne manyToOne = new HbmManyToOne
                {
                    column = "decimal"
                };
                int?result = manyToOne.GetMaxLength();

                result.ShouldBeNull();
            }
Example #17
0
        public void CanSetUpdate()
        {
            var hbmMapping = new HbmMapping();
            var member     = typeof(MyClass).GetProperty("Relation");
            var hbm        = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(member, hbm, hbmMapping);

            mapper.Update(false);
            Assert.That(hbm.update, Is.False);
        }
Example #18
0
        public void CanSetAccessor()
        {
            var hbmMapping = new HbmMapping();
            var member     = typeof(MyClass).GetProperty("Relation");
            var hbm        = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(member, hbm, hbmMapping);

            mapper.Access(Accessor.ReadOnly);
            Assert.That(hbm.Access, Is.EqualTo("readonly"));
        }
        public void CanSetAccessor()
        {
            var hbmMapping = new HbmMapping();
            var member     = typeof(MyClass).GetProperty("Relation");
            var hbm        = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(member, hbm, hbmMapping);

            mapper.Access(Accessor.ReadOnly);
            hbm.Access.Should().Be("readonly");
        }
        public void AfterSetMultiColumnsCantSetSimpleColumn()
        {
            var hbmMapping = new HbmMapping();
            var member     = typeof(MyClass).GetProperty("Relation");
            var mapping    = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(member, mapping, hbmMapping);

            mapper.Columns(cm => cm.Length(50), cm => cm.SqlType("VARCHAR(10)"));
            Executing.This(() => mapper.Column(cm => cm.Length(50))).Should().Throw <MappingException>();
        }
Example #21
0
 public ManyToOneMapper(MemberInfo member, IAccessorPropertyMapper accessorPropertyMapper, HbmManyToOne manyToOne, HbmMapping mapDoc)
 {
     this.member    = member;
     this.manyToOne = manyToOne;
     this.mapDoc    = mapDoc;
     if (member == null)
     {
         this.manyToOne.access = "none";
     }
     entityPropertyMapper = member == null ? new NoMemberPropertyMapper() : accessorPropertyMapper;
 }
Example #22
0
            public void Should_get_the_correct_value()
            {
                const string expected  = "System.String";
                HbmManyToOne manyToOne = new HbmManyToOne
                {
                    @class = expected + ", mscorlib"
                };
                string result = manyToOne.GetReturnType();

                result.ShouldBeEqualTo(expected);
            }
Example #23
0
            public void Should_get_the_correct_value()
            {
                const string expected  = "FirstName";
                HbmManyToOne manyToOne = new HbmManyToOne
                {
                    name = expected
                };
                string result = manyToOne.GetPropertyName();

                result.ShouldBeEqualTo(expected);
            }
Example #24
0
            public void Should_get_the_correct_value_from_column_if_not_null()
            {
                const string expected  = "VARCHAR2";
                HbmManyToOne manyToOne = new HbmManyToOne
                {
                    column = expected
                };
                string result = manyToOne.GetSqlType();

                result.ShouldBeEqualTo(expected);
            }
Example #25
0
            public void Should_get__true__given_unique_is_true()
            {
                HbmManyToOne manyToOne = new HbmManyToOne
                {
                    unique = true
                };
                bool?result = manyToOne.IsUnique();

                result.ShouldNotBeNull();
                result.Value.ShouldBeTrue();
            }
Example #26
0
            public void Should_get_null_given_valid_sqltype_and_null_length_in_Items()
            {
                HbmManyToOne manyToOne = new HbmManyToOne
                {
                    column = "VARCHAR2",
                    Items  = new object[] { new HbmColumn() }
                };
                int?result = manyToOne.GetMaxLength();

                result.ShouldBeNull();
            }
        public void CanSetFormula()
        {
            var hbmMapping = new HbmMapping();
            var member     = ForClass <MyClass> .Property(c => c.Relation);

            var mapping = new HbmManyToOne();
            var mapper  = new ManyToOneMapper(member, mapping, hbmMapping);

            mapper.Formula("SomeFormula");
            mapping.formula.Should().Be("SomeFormula");
        }
        public void CanSetPropertyRefName()
        {
            var hbmMapping = new HbmMapping();
            var member     = typeof(MyClass).GetProperty("Relation");
            var hbm        = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(member, hbm, hbmMapping);

            mapper.PropertyRef("PropertyRefName");

            hbm.propertyref.Should().Be("PropertyRefName");
        }
        public void WhenSetDefaultColumnNameThenDoesNotSetTheName()
        {
            var hbmMapping = new HbmMapping();
            var member     = typeof(MyClass).GetProperty("Relation");
            var mapping    = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(member, mapping, hbmMapping);

            mapper.Column(cm => cm.Name("Relation"));
            mapping.column.Should().Be.Null();
            mapping.Columns.Should().Be.Empty();
        }
        public void CanSetNotFoundWithIgnoreMode()
        {
            var hbmMapping = new HbmMapping();
            var member     = typeof(MyClass).GetProperty("Relation");
            var hbm        = new HbmManyToOne();
            var mapper     = new ManyToOneMapper(member, hbm, hbmMapping);

            mapper.NotFound(NotFoundMode.Ignore);

            hbm.notfound.Should().Be(HbmNotFoundMode.Ignore);
        }