public void WhenCreateWithTypeThenAssignClass() { var hbm = new HbmOneToMany(); new OneToManyMapper(typeof(MyClass), hbm, null); hbm.Class.Should().Not.Be.NullOrEmpty().And.Contain("MyClass"); }
public void WhenForceClassRelationToIncompatibleTypeThenThrows() { var hbm = new HbmOneToMany(); var mapper = new OneToManyMapper(typeof(IMyInterface), hbm, null); Executing.This(() => mapper.Class(typeof(Whatever))).Should().Throw <ArgumentOutOfRangeException>(); }
public void WhenCreateWithoutTypeThenNotThrow() { // relation using entity-name var hbm = new HbmOneToMany(); Executing.This(() => new OneToManyMapper(null, hbm, null)).Should().NotThrow(); }
public void OneToMany() { var hbm = new HbmOneToMany { @class = TypeUtils.GetClassName(mapping, typeof(TElement)) }; elementRelationshipAssing(hbm); }
public void CanAssignEntityName() { var hbm = new HbmOneToMany(); var mapper = new OneToManyMapper(typeof(MyClass), hbm, null); mapper.EntityName("myname"); hbm.EntityName.Should().Be("myname"); }
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); }
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"); }
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); }
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; }
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]()); }
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); } } }