示例#1
0
		public void UpdateCustomer()
		{
			ObjectMapperManager objMan = new ObjectMapperManager();

			Guid guid = Guid.NewGuid();

			using (var ts = new TransactionScope())
			using (var connection = CreateConnection())
			{
				var customer = DBTools.ExecuteReader(
					connection,
					"select top 1 * from [dbo].[Customers]",
					null,
					r => r.ToObject<Customer>()
				);

				var tracker = new ObjectsChangeTracker();
				tracker.RegisterObject(customer);
				customer.Address = guid.ToString();

				DBTools.UpdateObject(
					connection,
					customer,
					"Customers",
					new[] { "CustomerID" },
					tracker,
					DbSettings.MSSQL
				);
			}
		}
示例#2
0
        public void UpdateCustomer()
        {
            ObjectMapperManager objMan = new ObjectMapperManager();

            Guid guid = Guid.NewGuid();

            using (var ts = new TransactionScope())
                using (var connection = CreateConnection())
                {
                    var customer = DBTools.ExecuteReader(
                        connection,
                        "select top 1 * from [dbo].[Customers]",
                        null,
                        r => r.ToObject <Customer>()
                        );

                    var tracker = new ObjectsChangeTracker();
                    tracker.RegisterObject(customer);
                    customer.Address = guid.ToString();

                    DBTools.UpdateObject(
                        connection,
                        customer,
                        "Customers",
                        new[] { "CustomerID" },
                        tracker,
                        DbSettings.MSSQL
                        );
                }
        }
示例#3
0
        public static TPostData GetPostData <TPostData>() where TPostData : class, new()
        {
            ObjectsMapper <NameValueCollection, TPostData> mapper
                = new ObjectMapperManager().GetMapper <NameValueCollection, TPostData>(new FormCollectionMapConfig());

            return(mapper.Map(HttpContext.Current.Request.Form));
        }
 public DataReaderToObjectMapper(
     string mappingKey,
     ObjectMapperManager mapperManager,
     IEnumerable <string> skipFields)
     : base(GetMapperImpl(mappingKey, mapperManager, skipFields))
 {
 }
示例#5
0
        protected virtual TDto ToDto(TEntity entity)
        {
            //默认的成员对应
            var  mapper = new ObjectMapperManager().GetMapper <TEntity, TDto>(new DefaultMapConfig());
            TDto dto    = mapper.Map(entity);

            return(dto);
        }
示例#6
0
        protected virtual TEntity ToEntity(TDto dto)
        {
            //默认的成员对应
            var     mapper = new ObjectMapperManager().GetMapper <TDto, TEntity>(new DefaultMapConfig());
            TEntity entity = mapper.Map(dto);

            return(entity);
        }
        public CustomMapperImpl(
            ObjectMapperManager mapperMannager, 
            Type TypeFrom, 
            Type TypeTo, 
            IMappingConfigurator mappingConfigurator,
			object[] storedObjects)
        {
			Initialize(mapperMannager, TypeFrom, TypeTo, mappingConfigurator, storedObjects);
        }
示例#8
0
 public CustomMapperImpl(
     ObjectMapperManager mapperMannager,
     Type TypeFrom,
     Type TypeTo,
     IMappingConfigurator mappingConfigurator,
     object[] storedObjects)
 {
     Initialize(mapperMannager, TypeFrom, TypeTo, mappingConfigurator, storedObjects);
 }
        internal void Initialize(
            ObjectMapperManager MapperMannager,
            Type TypeFrom,
            Type TypeTo,
            IMappingConfigurator mappingConfigurator,
            object[] stroredObjects)
        {
            mapperMannager       = MapperMannager;
            typeFrom             = TypeFrom;
            typeTo               = TypeTo;
            _mappingConfigurator = mappingConfigurator;
            StroredObjects       = stroredObjects;
            if (_mappingConfigurator != null)
            {
                _rootOperation = _mappingConfigurator.GetRootMappingOperation(TypeFrom, TypeTo);
                if (_rootOperation == null)
                {
                    _rootOperation = new RootMappingOperation(TypeFrom, TypeTo);
                }
                var constructor = _rootOperation.TargetConstructor;
                if (constructor != null)
                {
                    _targetConstructor = (DelegateInvokerFunc_0)DelegateInvoker.GetDelegateInvoker(constructor);
                }

                var valuesPostProcessor = _rootOperation.ValuesPostProcessor;
                if (valuesPostProcessor != null)
                {
                    _valuesPostProcessor = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(valuesPostProcessor);
                }

                var converter = _rootOperation.Converter;
                if (converter != null)
                {
                    _converter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(converter);
                }

                var nullSubstitutor = _rootOperation.NullSubstitutor;
                if (nullSubstitutor != null)
                {
                    _nullSubstitutor = (DelegateInvokerFunc_0)DelegateInvoker.GetDelegateInvoker(nullSubstitutor);
                }

                var sourceFilter = _rootOperation.SourceFilter;
                if (sourceFilter != null)
                {
                    _sourceFilter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(sourceFilter);
                }

                var destinationFilter = _rootOperation.DestinationFilter;
                if (destinationFilter != null)
                {
                    _destinationFilter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(destinationFilter);
                }
            }
        }
示例#10
0
        public void Tt()
        {
            _target = new ObjectMapperManager();

            var classA = new ClassA {StringValue = "a string", IntValue = 123};
            ClassB classB = _target.GetMapper<ClassA, ClassB>().Map(classA);

            Assert.That(classB.StringValue, Is.EqualTo(classA.StringValue));
            Assert.That(classB.IntValue, Is.EqualTo(classA.IntValue));
        }
示例#11
0
        internal Kernel(ContainerOption containerOption, AutoObjectRegistrar autoObjectRegistrar)
        {
            Requires.NotNull(containerOption, "containerOption");
            Requires.NotNull(autoObjectRegistrar, "autoObjectRegistrar");
            _containerOption     = containerOption;
            _autoObjectRegistrar = autoObjectRegistrar;

            _emitInjectorManager = new EmitInjectorManager();
            _componentContainer  = new ComponentContainer();
            _objectMapperManager = new ObjectMapperManager();
            _threadedCommitter   = new ThreadedRegistrationCommitter();
            _registry            = new ObjectBuilderRegistry(this);
        }
示例#12
0
		public MappingOperationsProcessor(MappingOperationsProcessor prototype)
		{
			locFrom = prototype.locFrom;
			locTo = prototype.locTo;
			locState = prototype.locState;
			locException = prototype.locException;
			compilationContext = prototype.compilationContext;
			operations = prototype.operations;
			storedObjects = prototype.storedObjects;
			mappingConfigurator = prototype.mappingConfigurator;
			objectsMapperManager = prototype.objectsMapperManager;
			rootOperation = prototype.rootOperation;
			staticConvertersManager = prototype.staticConvertersManager;
		}
示例#13
0
        //protected override MoneyOutDto ToDto(MoneyOut entity)
        //{
        //    return null;
        //}

        protected override MoneyOut ToEntity(MoneyOutDto dto)
        {
            var mapper = new ObjectMapperManager().
                         GetMapper <MoneyOutDto, MoneyOut>(new DefaultMapConfig().ConvertUsing <MoneyOutDto, MoneyOut>(value => new MoneyOut(value.MoneyOutId)
            {
                KindType = value.Id,
                OutTime  = value.OutTime,
                Quality  = value.Quality,
                Remark   = value.Remark,
            }));
            MoneyOut entity = mapper.Map(dto);

            return(entity);
        }
 public MappingOperationsProcessor(MappingOperationsProcessor prototype)
 {
     LocFrom                 = prototype.LocFrom;
     LocTo                   = prototype.LocTo;
     LocState                = prototype.LocState;
     LocException            = prototype.LocException;
     CompilationContext      = prototype.CompilationContext;
     Operations              = prototype.Operations;
     StoredObjects           = prototype.StoredObjects;
     MappingConfigurator     = prototype.MappingConfigurator;
     ObjectsMapperManager    = prototype.ObjectsMapperManager;
     RootOperation           = prototype.RootOperation;
     StaticConvertersManager = prototype.StaticConvertersManager;
 }
示例#15
0
 public MappingOperationsProcessor(MappingOperationsProcessor prototype)
 {
     locFrom                 = prototype.locFrom;
     locTo                   = prototype.locTo;
     locState                = prototype.locState;
     locException            = prototype.locException;
     compilationContext      = prototype.compilationContext;
     operations              = prototype.operations;
     storedObjects           = prototype.storedObjects;
     mappingConfigurator     = prototype.mappingConfigurator;
     objectsMapperManager    = prototype.objectsMapperManager;
     rootOperation           = prototype.rootOperation;
     staticConvertersManager = prototype.staticConvertersManager;
 }
示例#16
0
		public MappingBuilder(
			ObjectMapperManager objectsMapperManager,
			Type from,
			Type to,
			TypeBuilder typeBuilder,
			IMappingConfigurator mappingConfigurator
			)
		{
			this.objectsMapperManager = objectsMapperManager;
			this.from = from;
			this.to = to;
			this.typeBuilder = typeBuilder;
			this.storedObjects = new List<object>();
			this.mappingConfigurator = mappingConfigurator;
		}
示例#17
0
        protected override SportRecord ToEntity(SportRecordDto dto)
        {
            var mapper = new ObjectMapperManager().
                         GetMapper <SportRecordDto, SportRecord>(new DefaultMapConfig().ConvertUsing <SportRecordDto, SportRecord>(value => new SportRecord(value.Id)
            {
                Id           = value.Id,
                ActivityKind = Convert.ToInt16(dto.SportName),
                ActivityTime = value.ActivityTime,
                Numbers      = value.Numbers,
                Remark       = value.Remark,
            }));
            SportRecord entity = mapper.Map(dto);

            return(entity);
        }
示例#18
0
 public MappingBuilder(
     ObjectMapperManager objectsMapperManager,
     Type from,
     Type to,
     TypeBuilder typeBuilder,
     IMappingConfigurator mappingConfigurator
     )
 {
     this._objectsMapperManager = objectsMapperManager;
     this._from                = from;
     this._to                  = to;
     this._typeBuilder         = typeBuilder;
     this.StoredObjects        = new List <object>();
     this._mappingConfigurator = mappingConfigurator;
 }
		public MapperPrimitiveImpl(ObjectMapperManager mapperMannager, Type TypeFrom, Type TypeTo, IMappingConfigurator mappingConfigurator)
			: base(mapperMannager, TypeFrom, TypeTo, mappingConfigurator, null)
		{
			var to = TypeTo == typeof(IEnumerable) ? typeof(object) : TypeTo;
			var from = TypeFrom == typeof(IEnumerable) ? typeof(object) : TypeFrom;

			var staticConv = mappingConfigurator.GetStaticConvertersManager() ?? StaticConvertersManager.DefaultInstance;
			var converterMethod = staticConv.GetStaticConverter(from, to);

			if (converterMethod != null)
			{
				_converter = (MethodInvokerFunc_1)MethodInvoker.GetMethodInvoker(
					null,
					converterMethod
				);
			}
		}
        public MapperPrimitiveImpl(ObjectMapperManager mapperMannager, Type TypeFrom, Type TypeTo, IMappingConfigurator mappingConfigurator)
            : base(mapperMannager, TypeFrom, TypeTo, mappingConfigurator, null)
        {
            var to   = TypeTo == typeof(IEnumerable) ? typeof(object) : TypeTo;
            var from = TypeFrom == typeof(IEnumerable) ? typeof(object) : TypeFrom;

            var staticConv      = mappingConfigurator.GetStaticConvertersManager() ?? StaticConvertersManager.DefaultInstance;
            var converterMethod = staticConv.GetStaticConverter(from, to);

            if (converterMethod != null)
            {
                _converter = (MethodInvokerFunc_1)MethodInvoker.GetMethodInvoker(
                    null,
                    converterMethod
                    );
            }
        }
示例#21
0
        private void Use()
        {
            Sourse src = new Sourse
            {
                A = 1,
                B = 0M,
                C = "2011/9/21 0:00:00",
                D = new Inner
                {
                    D2 = Guid.NewGuid()
                },
                E = "test"
            };

            ObjectsMapper <Sourse, Dest> mapper1 =
                new ObjectMapperManager().GetMapper <Sourse, Dest>(
                    new DefaultMapConfig()
                    //忽略
                    .IgnoreMembers <Sourse, Dest>(new string[] { "A" })
                    //为空赋值
                    .NullSubstitution <decimal?, decimal>((value) => - 1M)
                    //两个实体之间名字不一致,需要映射
                    .MatchMembers((x, y) =>
            {
                if (x == "address" && y == "userAddress")
                {
                    return(true);
                }
                return(x == y);
            })

                    //有外键关联,需要映射出外键所带名字
                    .ConvertUsing <Inner, Inner2>(value => new Inner2 {
                D12 = value.D1, D22 = value.D2
            })
                    //需要对某一个字段进行特殊处理
                    .PostProcess <Dest>((value, state) =>
            {
                value.F = "nothing";
                return(value);
            })
                    );

            Dest dst = mapper1.Map(src);
        }
        /// <summary>
        ///     Creates a new instance.
        /// </summary>
        /// <param name="keyProvider">Required. A function to return the value of the entity's primary key.</param>
        /// <param name="keyBinder">The binder of the entity's id.</param>
        /// <param name="items">Required. The list of entities to pre-populate the current instance with.</param>
        /// <param name="mapper">Object mapper manager instance</param>
        public InMemoryRepository(
            IKeyProvider <TEntity, TKey> keyProvider,
            IKeyBinder <TEntity, TKey> keyBinder,
            IEnumerable <TEntity> items,
            ObjectMapperManager mapper)
        {
            Guard.ArgumentNotNull(keyProvider, nameof(keyProvider));
            Guard.ArgumentNotNull(keyBinder, nameof(keyBinder));
            Guard.ArgumentNotNull(items, nameof(items));
            Guard.ArgumentNotNull(mapper, nameof(mapper));

            _keyProvider = keyProvider;
            _keyBinder   = keyBinder;
            _mapper      = mapper;
            _items       =
                new ConcurrentDictionary <TKey, TEntity>(
                    items.Select(i => new KeyValuePair <TKey, TEntity>(_keyBinder.Get(i), i)));
        }
示例#23
0
        /// <summary>
        /// Creates an instance of Mapper for collections.
        /// </summary>
        /// <param name="MapperName">Mapper name. It is used for registration in Mappers repositories.</param>
        /// <param name="mapperMannager">Mappers manager</param>
        /// <param name="TypeFrom">Source type</param>
        /// <param name="TypeTo">Destination type</param>
        /// <param name="SubMapper"></param>
        /// <returns></returns>
        public static MapperForCollectionImpl CreateInstance(
            string MapperName,
            ObjectMapperManager mapperMannager,
            Type TypeFrom,
            Type TypeTo,
            ObjectsMapperDescr SubMapper,
            IMappingConfigurator mappingConfigurator
            )
        {
            TypeBuilder tb = DynamicAssemblyManager.DefineType(
                "GenericListInv_" + MapperName,
                typeof(MapperForCollectionImpl)
                );

            if (TypeTo.IsGenericType() && TypeTo.GetGenericTypeDefinition() == typeof(List <>))
            {
                MethodBuilder methodBuilder = tb.DefineMethod(
                    "CopyToListInvoke",
                    MethodAttributes.Family | MethodAttributes.Virtual,
                    typeof(object),
                    new Type[] { typeof(IEnumerable) }
                    );

                InvokeCopyImpl(TypeTo, "CopyToList").Compile(new CompilationContext(methodBuilder.GetILGenerator()));

                methodBuilder = tb.DefineMethod(
                    "CopyToListScalarInvoke",
                    MethodAttributes.Family | MethodAttributes.Virtual,
                    typeof(object),
                    new Type[] { typeof(object) }
                    );

                InvokeCopyImpl(TypeTo, "CopyToListScalar").Compile(
                    new CompilationContext(methodBuilder.GetILGenerator())
                    );
            }

            MapperForCollectionImpl result = (MapperForCollectionImpl)Activator.CreateInstance(tb.CreateTypeInfo().AsType());

            result.Initialize(mapperMannager, TypeFrom, TypeTo, mappingConfigurator, null);
            result.subMapper = SubMapper;

            return(result);
        }
        private static ObjectsMapperBaseImpl GetMapperImpl(
            string mappingKey,
            ObjectMapperManager mapperManager,
            IEnumerable <string> skipFields)
        {
            IMappingConfigurator config = new DbReaderMappingConfig(skipFields, mappingKey);

            if (mapperManager != null)
            {
                return(mapperManager.GetMapperImpl(
                           typeof(DbDataReader),
                           typeof(T),
                           config));
            }
            return(ObjectMapperManager.DefaultInstance.GetMapperImpl(
                       typeof(DbDataReader),
                       typeof(T),
                       config));
        }
示例#25
0
        public void MapperMethod() {

            AutoMapperInit();

            StudentDo xiaoming = new StudentDo() { StudentName = "小明", Age = 10 };
            SchoolDo xiaoxue = new SchoolDo() { SchoolName = "义津小学", Address = "安徽安庆枞阳" };
            ClassDo banji_01 = new ClassDo() { ClassName = "401班", ClassLevel = 1, StudentNum = 50 };
            xiaoxue.ClassInfo = banji_01;

            SchoolDo zhongxue = new SchoolDo() { SchoolName = "义津中学", Address = "安徽安庆枞阳" };
            ClassDo banji_02 = new ClassDo() { ClassName = "501班", ClassLevel = 2, StudentNum = 50 };
            zhongxue.ClassInfo = banji_02;

            xiaoming.SmallSchool = xiaoxue;
            xiaoming.MiddleSchool = zhongxue;

            Stopwatch watcher = new Stopwatch();
            watcher.Start();
            for (var i = 0; i < 100000; i++) {
                var xiaohong = AutoMapper.Mapper.Map<StudentDo, StudentDto>(xiaoming);
            }
            watcher.Stop();
            long time1 = watcher.ElapsedMilliseconds;
            Console.WriteLine("共花费{0}毫秒", time1);

            watcher.Reset();
            watcher.Restart();

            ObjectsMapper<StudentDo, StudentDto> mapper = new ObjectMapperManager().GetMapper<StudentDo, StudentDto>(new DefaultMapConfig());
            StudentDto xiaofang = null;
            for (var i = 0; i < 1000000; i++) {
                xiaofang = mapper.Map(xiaoming);
            }
            long time2 = watcher.ElapsedMilliseconds;
            Console.WriteLine("共花费{0}毫秒", time2);

            System.Threading.Thread.Sleep(5000);

            Console.ReadLine();

        }
示例#26
0
        public void UpdateCustomer()
        {
            ObjectMapperManager objMan = new ObjectMapperManager();

            Guid guid = Guid.NewGuid();

            // todo: there is a bug , In the callstack of DBTools and DataReaderToObjectMapper ocur two times Reader.Read(); so..

            using (var ts = new TransactionScope())
                using (var connection = CreateConnection())
                {
                    var customer = DBTools.ExecuteReader(
                        connection,
                        "select * from Customers limit 1 ",
                        null,
                        r => r.ToObject <Customer>()
                        );
                    Assert.IsNotNull(customer);



                    var tracker = new ObjectsChangeTracker();
                    tracker.RegisterObject(customer);
                    customer.Address = guid.ToString();

                    var result = DBTools.UpdateObject(
                        connection,
                        customer,
                        "Customers",
                        new[] { "CustomerID" },
                        tracker,
                        DbSettings.MSSQL
                        );
                    Assert.IsTrue(result.Result == 1);
                }
        }
示例#27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ObjectsChangeTracker"/> class.
 /// </summary>
 /// <param name="mapManager">The map manager.</param>
 public ObjectsChangeTracker(ObjectMapperManager mapManager)
 {
     this._mapManager = mapManager;
 }
示例#28
0
 static Mapper()
 {
     _engine     = new MappingEngine();
     _emitMapper = ObjectMapperManager.DefaultInstance;
     _instance   = new Mapper();
 }
示例#29
0
        public void MapperMethod()
        {
            AutoMapperInit();

            StudentDo xiaoming = new StudentDo()
            {
                StudentName = "小明", Age = 10
            };
            SchoolDo xiaoxue = new SchoolDo()
            {
                SchoolName = "义津小学", Address = "安徽安庆枞阳"
            };
            ClassDo banji_01 = new ClassDo()
            {
                ClassName = "401班", ClassLevel = 1, StudentNum = 50
            };

            xiaoxue.ClassInfo = banji_01;

            SchoolDo zhongxue = new SchoolDo()
            {
                SchoolName = "义津中学", Address = "安徽安庆枞阳"
            };
            ClassDo banji_02 = new ClassDo()
            {
                ClassName = "501班", ClassLevel = 2, StudentNum = 50
            };

            zhongxue.ClassInfo = banji_02;

            xiaoming.SmallSchool  = xiaoxue;
            xiaoming.MiddleSchool = zhongxue;

            Stopwatch watcher = new Stopwatch();

            watcher.Start();
            for (var i = 0; i < 100000; i++)
            {
                var xiaohong = AutoMapper.Mapper.Map <StudentDo, StudentDto>(xiaoming);
            }
            watcher.Stop();
            long time1 = watcher.ElapsedMilliseconds;

            Console.WriteLine("共花费{0}毫秒", time1);

            watcher.Reset();
            watcher.Restart();

            ObjectsMapper <StudentDo, StudentDto> mapper = new ObjectMapperManager().GetMapper <StudentDo, StudentDto>(new DefaultMapConfig());
            StudentDto xiaofang = null;

            for (var i = 0; i < 1000000; i++)
            {
                xiaofang = mapper.Map(xiaoming);
            }
            long time2 = watcher.ElapsedMilliseconds;

            Console.WriteLine("共花费{0}毫秒", time2);

            System.Threading.Thread.Sleep(5000);

            Console.ReadLine();
        }
 public ObjectsChangeTracker()
 {
     _mapManager = ObjectMapperManager.DefaultInstance;
 }
 public OOMapper()
 {
     _mapper = ObjectMapperManager.DefaultInstance;
 }
示例#32
0
 public MapperModule()
 {
     OwnDefaultMapConfigs = OwnDefaultMapConfig();
     OMM = new ObjectMapperManager();
 }
 public DataReaderToObjectMapper(ObjectMapperManager mapperManager)
     : this(null, mapperManager, null)
 {
 }
 public ObjectsChangeTracker(ObjectMapperManager MapManager)
 {
     _mapManager = MapManager;
 }
 public ObjectsChangeTracker()
 {
     _mapManager = ObjectMapperManager.DefaultInstance;
 }
 public ObjectsChangeTracker(ObjectMapperManager MapManager)
 {
     _mapManager = MapManager;
 }
 public EmitMapperAdapter()
 {
     this.manager = new EmitMapper.ObjectMapperManager();
 }
示例#38
0
        public void Initialize(
            ObjectMapperManager MapperMannager, 
            Type TypeFrom, 
            Type TypeTo, 
			IMappingConfigurator mappingConfigurator,
			object[] stroredObjects)
        {
            mapperMannager = MapperMannager;
            typeFrom = TypeFrom;
            typeTo = TypeTo;
			_mappingConfigurator = mappingConfigurator;
			StroredObjects = stroredObjects;
			if (_mappingConfigurator != null)
			{
				_rootOperation = _mappingConfigurator.GetRootMappingOperation(TypeFrom, TypeTo);
				if (_rootOperation == null)
				{
					_rootOperation = new RootMappingOperation(TypeFrom, TypeTo);
				}
				var constructor = _rootOperation.TargetConstructor;
                if (constructor != null)
                {
                    _targetConstructor = (DelegateInvokerFunc_0)DelegateInvoker.GetDelegateInvoker(constructor);
                }

                var valuesPostProcessor = _rootOperation.ValuesPostProcessor;
                if (valuesPostProcessor != null)
                {
                    _valuesPostProcessor = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(valuesPostProcessor);
                }

                var converter = _rootOperation.Converter;
                if (converter != null)
                {
                    _converter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(converter);
                }

                var nullSubstitutor = _rootOperation.NullSubstitutor;
                if (nullSubstitutor != null)
                {
                    _nullSubstitutor = (DelegateInvokerFunc_0)DelegateInvoker.GetDelegateInvoker(nullSubstitutor);
                }
			}
        }