示例#1
0
        private void Join <SubType>(ClasslikeMapBase <T> map, Action <ClasslikeMapBase <SubType> > action, string tableName)
            where SubType : EntityBase
        {
            var t  = typeof(T);
            var st = typeof(SubType);

            tableName = string.IsNullOrEmpty(tableName) ? st.Name : tableName;

            var subclassMap = new SubclassMap <SubType>();

            subclassMap.Extends <T>();

            using (_mapper.OverrideJoinContext("[" + tableName + "]", tableName + "ID"))
            {
                if (subclassMap.AnythingToMap())
                {
                    subclassMap.Join(_mapper.JoinContext.TableName, x =>
                    {
                        x.KeyColumn(_mapper.JoinContext.KeyColumnName);
                        x.AutoMap();
                        if (action != null)
                        {
                            action(x);
                        }
                    });
                }
                else if (action != null)
                {
                    action(subclassMap);
                }
            }

            _mapper.Config.FluentMappings.Add(subclassMap);
        }
示例#2
0
        public static SubclassMapping map_as_subclass <T>(Action <SubclassMap <T> > setup)
        {
            var provider = new SubclassMap <T>();

            setup(provider);

            return(((IIndeterminateSubclassMappingProvider)provider).GetSubclassMapping(SubclassType.Subclass));
        }
示例#3
0
        public virtual MappingTester <T> SubClassMapping <TSubClass>(Action <SubclassMap <TSubClass> > action) where TSubClass : T
        {
            var map = new SubclassMap <TSubClass>();

            action(map);

            this.model.Add(map);

            return(this);
        }
        private void Mapping(Action <SubclassMap <ExampleInheritedClass> > mappingDefinition)
        {
            var classMap    = new ClassMap <ExampleClass>();
            var subclassMap = new SubclassMap <ExampleInheritedClass>();

            mappingDefinition(subclassMap);

            model.Add(subclassMap);

            mapping     = classMap;
            mappingType = typeof(ExampleClass);
        }
        public void ShouldSetForeignKeyOnJoinedSubclasses()
        {
            var classMap = new ClassMap<ExampleClass>();
            var subclassMap = new SubclassMap<ExampleInheritedClass>();

            model.Add(classMap);
            model.Add(subclassMap);

            model.BuildMappings()
                .First()
                .Classes.First()
                .Subclasses.Cast<JoinedSubclassMapping>().First()
                .Key.Columns.First().Name.ShouldEqual("ExampleClass!");
        }
示例#6
0
        public void ShouldSetForeignKeyOnJoinedSubclasses()
        {
            var classMap    = new ClassMap <ExampleClass>();
            var subclassMap = new SubclassMap <ExampleInheritedClass>();

            model.Add(classMap);
            model.Add(subclassMap);

            model.BuildMappings()
            .First()
            .Classes.First()
            .Subclasses.Cast <JoinedSubclassMapping>().First()
            .Key.Columns.First().Name.ShouldEqual("ExampleClass!");
        }
        private void Mapping(Action <SubclassMap <ExampleInheritedClass> > mappingDefinition)
        {
            var classMap = new ClassMap <ExampleClass>();

            classMap.DiscriminateSubClassesOnColumn("col");

            var subclassMap = new SubclassMap <ExampleInheritedClass>();

            mappingDefinition(subclassMap);

            model.Add(subclassMap);

            mapping     = classMap;
            mappingType = typeof(ExampleClass);
        }
        private void VerifyModel(Action <JoinedSubclassMapping> modelVerification)
        {
            var classMap    = new ClassMap <ExampleClass>();
            var subclassMap = new SubclassMap <ExampleInheritedClass>();

            model.Add(classMap);
            model.Add(subclassMap);

            var generatedModels = model.BuildMappings();
            var modelInstance   = generatedModels
                                  .First(x => x.Classes.FirstOrDefault(c => c.Type == typeof(ExampleClass)) != null)
                                  .Classes.First()
                                  .Subclasses.First();

            modelVerification((JoinedSubclassMapping)modelInstance);
        }
        public void ShouldAllowSettingOfKeyInConvention()
        {
            var model = new PersistenceModel();

            var parent = new ClassMap<Parent>();
            var child = new SubclassMap<Child>();

            model.Add(parent);
            model.Add(child);
            model.Conventions.Add<SCKeyConvention>();

            var subclass = model.BuildMappings()
                .SelectMany(x => x.Classes)
                .First()
                .Subclasses.First();

            ((JoinedSubclassMapping)subclass).Key.Columns.First().Name.ShouldEqual("xxx");
            ((JoinedSubclassMapping)subclass).Key.Columns.Count().ShouldEqual(1);
        }
        public void ShouldAllowSettingOfKeyInConvention()
        {
            var model = new PersistenceModel();

            var parent = new ClassMap <Parent>();
            var child  = new SubclassMap <Child>();

            model.Add(parent);
            model.Add(child);
            model.Conventions.Add <SCKeyConvention>();

            var subclass = model.BuildMappings()
                           .SelectMany(x => x.Classes)
                           .First()
                           .Subclasses.First();

            ((JoinedSubclassMapping)subclass).Key.Columns.First().Name.ShouldEqual("xxx");
            ((JoinedSubclassMapping)subclass).Key.Columns.Count().ShouldEqual(1);
        }
示例#11
0
        private void Subclass <TSubType>(ClasslikeMapBase <T> mapping, Action <ClasslikeMapBase <TSubType> > action)
            where TSubType : EntityBase
        {
            var t  = typeof(T);
            var st = typeof(TSubType);

            var subclassMap = new SubclassMap <TSubType>();

            subclassMap.Extends <T>();
            if (_mapper.JoinContext != null)
            {
                if (subclassMap.AnythingToMap())
                {
                    subclassMap.Join(_mapper.JoinContext.TableName, x =>
                    {
                        x.KeyColumn(_mapper.JoinContext.KeyColumnName);
                        x.AutoMap();
                        if (action != null)
                        {
                            action(x);
                        }
                    });
                }
                else if (action != null)
                {
                    action(subclassMap);
                }
            }
            else
            {
                if (subclassMap.AnythingToMap())
                {
                    subclassMap.AutoMap();
                }
                if (action != null)
                {
                    action(subclassMap);
                }
            }

            _mapper.Config.FluentMappings.Add(subclassMap);
        }
        private void VerifyModel(Action<SubclassMapping> modelVerification)
        {
            var classMap = new ClassMap<ExampleClass>();

            classMap.Id(x => x.Id);
            classMap.DiscriminateSubClassesOnColumn("col");

            var subclassMap = new SubclassMap<ExampleInheritedClass>();

            model.Add(classMap);
            model.Add(subclassMap);

            var generatedModels = model.BuildMappings();
            var modelInstance = generatedModels
                .First(x => x.Classes.FirstOrDefault(c => c.Type == typeof(ExampleClass)) != null)
                .Classes.First()
                .Subclasses.First();

            modelVerification((SubclassMapping)modelInstance);
        }
        private void VerifyModel(Action <SubclassMapping> modelVerification)
        {
            var classMap = new ClassMap <ExampleClass>();

            classMap.Id(x => x.Id);
            classMap.DiscriminateSubClassesOnColumn("col");

            var subclassMap = new SubclassMap <ExampleInheritedClass>();

            model.Add(classMap);
            model.Add(subclassMap);

            var generatedModels = model.BuildMappings();
            var modelInstance   = generatedModels
                                  .First(x => x.Classes.FirstOrDefault(c => c.Type == typeof(ExampleClass)) != null)
                                  .Classes.First()
                                  .Subclasses.First();

            modelVerification((SubclassMapping)modelInstance);
        }
        public void ComponentWithPropertiesShouldAddToModelComponentsCollection()
        {
            var classMap = new ClassMap <Parent>();

            classMap.Id(x => x.Id);

            var subclassMap = new SubclassMap <Child>();

            subclassMap.Component(x => x.Component, c => c.Map(x => x.Name));

            var model = new PersistenceModel();

            model.Add(classMap);
            model.Add(subclassMap);

            model.BuildMappings()
            .First()
            .Classes.First()
            .Subclasses.First()
            .Components.Count().ShouldEqual(1);
        }
        public void ComponentWithPropertiesShouldAddToModelComponentsCollection()
        {
            var classMap = new ClassMap<Parent>();

            classMap.Id(x => x.Id);

            var subclassMap = new SubclassMap<Child>();

            subclassMap.Component(x => x.Component, c => c.Map(x => x.Name));

            var model = new PersistenceModel();

            model.Add(classMap);
            model.Add(subclassMap);

            model.BuildMappings()
                .First()
                .Classes.First()
                .Subclasses.First()
                .Components.Count().ShouldEqual(1);
        }
        private void Mapping(Action<SubclassMap<ExampleInheritedClass>> mappingDefinition)
        {
            var classMap = new ClassMap<ExampleClass>();
            var subclassMap = new SubclassMap<ExampleInheritedClass>();

            mappingDefinition(subclassMap);

            model.Add(subclassMap);

            mapping = classMap;
            mappingType = typeof(ExampleClass);
        }
 public static string GenerateFkName <TSource, TPropValue>(this SubclassMap <TSource> mapper, Expression <Func <TSource, TPropValue> > propertyExpression)
 {
     return(GenerateFkName(propertyExpression));
 }
        private void Mapping(Action<SubclassMap<ExampleInheritedClass>> mappingDefinition)
        {
            var classMap = new ClassMap<ExampleClass>();
            classMap.Id(x => x.Id);
            classMap.DiscriminateSubClassesOnColumn("col");

            var subclassMap = new SubclassMap<ExampleInheritedClass>();

            mappingDefinition(subclassMap);

            model.Add(subclassMap);

            mapping = classMap;
            mappingType = typeof(ExampleClass);
        }
 public static string GenerateFkName <TSource, TFkParent>(this SubclassMap <TSource> mapper)
 {
     return("U5_FK_" + typeof(TSource).Name + "_" + typeof(TFkParent).Name);
 }
        private void VerifyModel(Action<JoinedSubclassMapping> modelVerification)
        {
            var classMap = new ClassMap<ExampleClass>();
            var subclassMap = new SubclassMap<ExampleInheritedClass>();

            model.Add(classMap);
            model.Add(subclassMap);

            var generatedModels = model.BuildMappings();
            var modelInstance = generatedModels
                .First(x => x.Classes.FirstOrDefault(c => c.Type == typeof(ExampleClass)) != null)
                .Classes.First()
                .Subclasses.First();

            modelVerification((JoinedSubclassMapping)modelInstance);
        }