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 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");
		}
 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)"));
     ActionAssert.Throws<ConfOrm.MappingException>(() => mapper.Column(cm => cm.Length(50)));
 }
		public virtual void ManyToOne(MemberInfo property, Action<IManyToOneMapper> mapping)
		{
			if (!IsMemberSupportedByMappedContainer(property))
			{
				throw new ArgumentOutOfRangeException("property", "Can't add a property of another graph");
			}
			var hbm = new HbmManyToOne { name = property.Name };
			mapping(new ManyToOneMapper(property, hbm, MapDoc));
			AddProperty(hbm);
		}
		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 SettingColumnOverridesFormula()
 {
     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("formula");
     mapper.Column(cm => cm.Unique(true));
     mapping.formula.Should().Be.Null();
 }
        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 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 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 Should_get_exception_given_notnullSpecified_is_false_and_Items_is_null()
 {
     HbmManyToOne manyToOne = new HbmManyToOne
         {
             notnullSpecified = false,
             Items = null
         };
     bool? result = manyToOne.CanBeNull();
     result.ShouldBeNull();
 }
Пример #11
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;
 }
 public void SettingColumnPlainValuesOverridesFormula()
 {
     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("formula");
     mapper.Column("colName");
     mapping.formula.Should().Be.Null();
     mapping.column.Should().Be("colName");
 }
        public void CanForceClassRelation()
        {
            var hbmMapping = new HbmMapping();
            var member = typeof(MyClass).GetProperty("TheOtherRelation");
            var mapping = new HbmManyToOne();
            var mapper = new ManyToOneMapper(member, mapping, hbmMapping);

            mapper.Class(typeof (Relation));

            mapping.Class.Should().Contain("Relation").And.Not.Contain("IRelation");
        }
		public void WhenSetDifferentColumnNameThenSetTheName()
		{
			var hbmMapping = new HbmMapping();
			var member = typeof(MyClass).GetProperty("Relation");
			var hbm = new HbmManyToOne();
			var mapper = new ManyToOneMapper(member, hbm, hbmMapping);
			mapper.Column(cm => cm.Name("RelationId"));

			hbm.Columns.Should().Have.Count.EqualTo(1);
			hbm.Columns.Single().name.Should().Be("RelationId");
		}
Пример #15
0
 public void Should_get__false__given_notnullSpecified_and_notnull_are_both_true()
 {
     HbmManyToOne manyToOne = new HbmManyToOne
         {
             notnullSpecified = true,
             notnull = true
         };
     bool? result = manyToOne.CanBeNull();
     result.ShouldNotBeNull();
     result.Value.ShouldBeFalse();
 }
 public void SettingFormulaOverridesColumnNodes()
 {
     var hbmMapping = new HbmMapping();
     var member = ForClass<MyClass>.Property(c => c.Relation);
     var mapping = new HbmManyToOne();
     var mapper = new ManyToOneMapper(member, mapping, hbmMapping);
     mapper.Column(cm => cm.SqlType("VARCHAR(80)"));
     mapper.Formula("formula");
     mapping.formula.Should().Be("formula");
     mapping.column.Should().Be(null);
     mapping.Items.Should().Be.Null();
 }
Пример #17
0
 public void Should_get_null_given_notnullSpecified_is_false_and_Items_notnullSpecified_is_false()
 {
     HbmManyToOne manyToOne = new HbmManyToOne
         {
             notnullSpecified = false,
             Items = new object[]
                 {
                     new HbmColumn
                         {
                             notnullSpecified = false
                         }
                 }
         };
     bool? result = manyToOne.CanBeNull();
     result.ShouldBeNull();
 }
		public void WhenSetBasicColumnValuesThenSetPlainValues()
		{
			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.UniqueKey("theUnique");
				cm.NotNullable(true);
			});
			Assert.That(mapping.Items, Is.Null);
			Assert.That(mapping.uniquekey, Is.EqualTo("theUnique"));
			Assert.That(mapping.notnull, Is.EqualTo(true));
			Assert.That(mapping.notnullSpecified, Is.EqualTo(true));
		}
 public ManyToOneMapper(MemberInfo member, HbmManyToOne manyToOne, HbmMapping mapDoc)
 {
     this.member = member;
     this.manyToOne = manyToOne;
     this.mapDoc = mapDoc;
     if (member == null)
     {
         this.manyToOne.access = "none";
     }
     if (member == null)
     {
         entityPropertyMapper = new NoMemberPropertyMapper();
     }
     else
     {
         entityPropertyMapper = new AccessorPropertyMapper(member.DeclaringType, member.Name, x => manyToOne.access = x);
     }
 }
Пример #20
0
		private void BindManyToOneProperty(HbmManyToOne manyToOneMapping, Property property)
		{
			property.Cascade = manyToOneMapping.cascade ?? mappings.DefaultCascade;
			property.IsUpdateable = manyToOneMapping.update;
			property.IsInsertable = manyToOneMapping.insert;
			var toOne = property.Value as ToOne;
			if (toOne != null)
			{
				string propertyRef = toOne.ReferencedPropertyName;
				if (propertyRef != null)
					mappings.AddUniquePropertyReference(toOne.ReferencedEntityName, propertyRef);
				toOne.CreateForeignKey();
			}
		}
Пример #21
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;
		}
Пример #22
0
		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);
			}

			BindForeingKey(manyToOneMapping.foreignkey, model);
		}
Пример #23
0
 public void Should_get_the_correct_value_from_Items_given_null_index()
 {
     const string expected = "Name";
     HbmManyToOne manyToOne = new HbmManyToOne
         {
             Items = new object[]
                 {
                     new HbmColumn
                         {
                             index = expected
                         }
                 }
         };
     string result = manyToOne.GetUniqueIndex();
     result.ShouldNotBeNull();
     result.ShouldBeEqualTo(expected);
 }
Пример #24
0
 public void Should_get_the_correct_value_from_index_if_not_null()
 {
     const string expected = "Name";
     HbmManyToOne manyToOne = new HbmManyToOne
         {
             index = expected
         };
     string result = manyToOne.GetUniqueIndex();
     result.ShouldNotBeNull();
     result.ShouldBeEqualTo(expected);
 }
Пример #25
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();
 }
Пример #26
0
 public void Should_get_the_correct_value_from_Items_given_null_column()
 {
     const string expected = "VARCHAR2";
     HbmManyToOne manyToOne = new HbmManyToOne
         {
             Items = new object[]
                 {
                     new HbmColumn
                         {
                             sqltype = expected
                         }
                 }
         };
     string result = manyToOne.GetSqlType();
     result.ShouldBeEqualTo(expected);
 }
Пример #27
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);
 }
Пример #28
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);
 }
Пример #29
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);
 }
Пример #30
0
 public void Should_get_the_correct_value_from_Items_if_sqltype_is_valid()
 {
     const int expected = 16;
     HbmManyToOne manyToOne = new HbmManyToOne
         {
             column = "VARCHAR2",
             Items = new object[]
                 {
                     new HbmColumn
                         {
                             length = expected.ToString()
                         }
                 }
         };
     int? result = manyToOne.GetMaxLength();
     result.ShouldNotBeNull();
     result.Value.ShouldBeEqualTo(expected);
 }