public void WhenForceClassRelationToIncompatibleTypeThenThrows() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); Executing.This(() => mapper.Class(typeof(Whatever))).Should().Throw<ArgumentOutOfRangeException>(); }
public void CanAssignEntityName() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.EntityName("myname"); mapping.EntityName.Should().Be("myname"); }
public void CanAssignNotFoundMode() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.NotFound(NotFoundMode.Ignore); mapping.NotFoundMode.Should().Be(HbmNotFoundMode.Ignore); }
public void SettingColumnOverridesFormula() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Formula("formula"); mapper.Column(cm => cm.Unique(true)); mapping.formula.Should().Be.Null(); }
public void AfterSetMultiColumnsCantSetSimpleColumn() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Columns(cm => cm.Length(50), cm => cm.SqlType("VARCHAR(10)")); mapper.Executing(x => x.Column(cm => cm.Length(50))).Throws<ConfOrm.MappingException>(); }
public void CanSetFormula() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Formula("SomeFormula"); mapping.formula.Should().Be("SomeFormula"); }
public void SettingColumnPlainValuesOverridesFormula() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Formula("formula"); mapper.Column("colName"); mapping.formula.Should().Be.Null(); mapping.column.Should().Be("colName"); }
public void CanForceClassRelation() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Class(typeof(MyClass)); mapping.Class.Should().Contain("MyClass").And.Not.Contain("IMyInterface"); }
public void Should_get_the_correct_value_from_column_if_not_null() { const string expected = "FirstName"; HbmManyToMany property = new HbmManyToMany { column = expected }; string result = property.GetColumnName(); result.ShouldBeEqualTo(expected); }
public void SettingFormulaOverridesColumnNodes() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); 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(); }
public void WhenSetFormulaThenResetColumn() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Column("MyColumn"); mapper.Formula("SomeFormula"); mapping.formula.Should().Be("SomeFormula"); mapping.column.Should().Be.Null(); mapping.Items.Should().Be.Null(); }
public void Should_get_the_correct_value() { const string expected = "System.String"; HbmManyToMany component = new HbmManyToMany { @class = expected + ", mscorlib" }; string result = component.GetReturnType(); result.ShouldBeEqualTo(expected); }
public void CanSetLazyness() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Lazy(LazyRelation.NoProxy); mapping.lazy.Should().Be(HbmRestrictedLaziness.False); mapper.Lazy(LazyRelation.NoLazy); mapping.lazy.Should().Be(HbmRestrictedLaziness.False); mapper.Lazy(LazyRelation.Proxy); mapping.lazy.Should().Be(HbmRestrictedLaziness.Proxy); }
public ManyToManyMapper(System.Type elementType, HbmManyToMany manyToMany, HbmMapping mapDoc) { if (elementType == null) { throw new ArgumentNullException("elementType"); } if (manyToMany == null) { throw new ArgumentNullException("manyToMany"); } this.elementType = elementType; this.manyToMany = manyToMany; this.mapDoc = mapDoc; }
private void BindManyToManySubelements(HbmManyToMany manyToManyMapping, Mapping.Collection collection) { // Bind the where string whereCondition = string.IsNullOrEmpty(manyToManyMapping.where) ? null : manyToManyMapping.where; collection.ManyToManyWhere = whereCondition; // Bind the order-by string orderFragment = string.IsNullOrEmpty(manyToManyMapping.orderby) ? null : manyToManyMapping.orderby; collection.ManyToManyOrdering = orderFragment; // Bind the filters var filters = manyToManyMapping.filter; var hasFilters = filters != null && filters.Length > 0; if ((hasFilters || whereCondition != null) && collection.FetchMode == FetchMode.Join && collection.Element.FetchMode != FetchMode.Join) { throw new MappingException( string.Format( "many-to-many defining filter or where without join fetching not valid within collection using join fetching [{0}]", collection.Role)); } new FiltersBinder(collection, Mappings).Bind(filters, collection.AddManyToManyFilter); }
public void WhenSetFormulaWithMultipleLinesThenSetFormulaNode() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); var formula = @"Line1 Line2"; mapper.Formula(formula); mapping.formula.Should().Be.Null(); mapping.Items.FirstOrDefault().Should().Not.Be.Null().And.Be.OfType<HbmFormula>(); var hbmFormula = (HbmFormula)(mapping.Items.First()); hbmFormula.Text.Length.Should().Be(2); hbmFormula.Text[0].Should().Be("Line1"); hbmFormula.Text[1].Should().Be("Line2"); }
private void BindManyToMany(HbmManyToMany manyToManyMapping, Mapping.Collection model) { var manyToMany = new ManyToOne(model.CollectionTable); model.Element = manyToMany; new ValuePropertyBinder(manyToMany, Mappings).BindSimpleValue(manyToManyMapping, Mapping.Collection.DefaultElementColumnName, false); InitOuterJoinFetchSetting(manyToManyMapping, manyToMany); var restrictedLaziness = manyToManyMapping.lazySpecified ? manyToManyMapping.lazy : (HbmRestrictedLaziness?) null; InitLaziness(restrictedLaziness, manyToMany, true); if(!string.IsNullOrEmpty(manyToManyMapping.propertyref)) { manyToMany.ReferencedPropertyName = manyToManyMapping.propertyref; } manyToMany.ReferencedEntityName = GetEntityName(manyToManyMapping, mappings); manyToMany.IsIgnoreNotFound = manyToManyMapping.NotFoundMode == HbmNotFoundMode.Ignore; if(!string.IsNullOrEmpty(manyToManyMapping.foreignkey)) { manyToMany.ForeignKeyName = manyToManyMapping.foreignkey; } BindManyToManySubelements(manyToManyMapping, model); }
public void WhenSetMultiColumnsValuesThenAutoassignColumnNames() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Columns(cm => cm.Length(50), cm => cm.SqlType("VARCHAR(10)")); mapping.Columns.Should().Have.Count.EqualTo(2); mapping.Columns.All(cm => cm.name.Satisfy(n => !string.IsNullOrEmpty(n))); }
public void WhenSetMultiColumnsValuesThenAddColumns() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Columns(cm => { cm.Name("column1"); cm.Length(50); }, cm => { cm.Name("column2"); cm.SqlType("VARCHAR(10)"); }); mapping.Columns.Should().Have.Count.EqualTo(2); }
public void WhenSetColumnValuesThenAddColumnTag() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Column(cm => { cm.SqlType("VARCHAR(3)"); cm.NotNullable(true); }); mapping.Columns.Should().Not.Be.Null(); mapping.Columns.Should().Have.Count.EqualTo(1); }
protected void InitOuterJoinFetchSetting(HbmManyToMany manyToMany, IFetchable model) { FetchMode fetchStyle; bool lazy = true; if (!manyToMany.fetchSpecified) { if (!manyToMany.outerjoinSpecified) { //NOTE SPECIAL CASE: // default to join and non-lazy for the "second join" // of the many-to-many lazy = false; fetchStyle = FetchMode.Join; } else { fetchStyle = GetFetchStyle(manyToMany.outerjoin); } } else { fetchStyle = GetFetchStyle(manyToMany.fetch); } model.FetchMode = fetchStyle; model.IsLazy = lazy; }
public void WhenSetDifferentColumnNameThenSetTheName() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Column(cm => cm.Name("pepe")); mapping.Columns.Should().Have.Count.EqualTo(1); mapping.Columns.Single().name.Should().Be("pepe"); }
public void WhenSetFormulaWithNullThenDoNothing() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Column("MyColumn"); mapper.Formula(null); mapping.formula.Should().Be.Null(); mapping.column.Should().Not.Be.Null(); }
public void ManyToMany(Action<IManyToManyMapper> mapping) { var hbm = new HbmManyToMany {@class = collectionElementType.GetShortClassName(mapDoc)}; mapping(new ManyToManyMapper(collectionElementType, hbm, mapDoc)); elementRelationshipAssing(hbm); }
public void BindSimpleValue(HbmManyToMany manyToManyMapping, string propertyPath, bool isNullable) { var formulas = manyToManyMapping.Formulas.ToArray(); if (formulas.Length > 0) { BindFormulas(formulas); } else { new ColumnsBinder(value, Mappings).Bind(manyToManyMapping.Columns, isNullable, () => new HbmColumn { name = mappings.NamingStrategy.PropertyToColumnName(propertyPath), unique = manyToManyMapping.unique, uniqueSpecified = true }); } }
public void WhenSetDefaultColumnNameThenDoesNotSetTheName() { var mapping = new HbmManyToMany(); var mapper = new ManyToManyMapper(typeof(MyClass), mapping, null); mapper.Column(cm => cm.Name("MyClass")); mapping.column.Should().Be.Null(); mapping.Columns.Should().Be.Empty(); }