예제 #1
0
    public void ShouldMapPropertiesUsingOwnMapper()
    {
        var mappingConfiguration = new DataRowMappingConfiguration <TestClass>()
                                   .Add("firstName", x => x.Name)
                                   .Add("age", x => x.Age);

        var mapper    = new DataRowMapper <TestClass>(mappingConfiguration);
        var dataTable = new DataTable();

        dataTable.Columns.Add("firstName");
        dataTable.Columns.Add("age");
        for (int i = 0; i < 5000000; i++)
        {
            var row = dataTable.NewRow();
            row["firstName"] = "John";
            row["age"]       = 15;
            dataTable.Rows.Add(row);
        }
        var start  = DateTime.Now;
        var result = mapper.Map(dataTable).ToList();

        Console.WriteLine((DateTime.Now - start).TotalSeconds);
        Assert.AreEqual("John", result.First().Name);
        Assert.AreEqual(15, result.First().Age);
    }
예제 #2
0
        public void DataAccessSetUp()
        {
#if (NETCOREAPP2_1)
            DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
#endif

            TransactionScopeFactory =
                new DefaultTransactionScopeFactory(true, IsolationLevel.ReadCommitted, TimeSpan.FromSeconds(120));
            DatabaseGateway      = new DatabaseGateway();
            DataRowMapper        = new DataRowMapper();
            DatabaseContextCache = new ThreadStaticDatabaseContextCache();

            var connectionConfigurationProvider = new Mock <IConnectionConfigurationProvider>();

            connectionConfigurationProvider.Setup(m => m.Get(It.IsAny <string>())).Returns(
                new ConnectionConfiguration(
                    "Abacus",
                    "System.Data.SqlClient",
                    "Data Source=.\\sqlexpress;Initial Catalog=Abacus;Integrated Security=SSPI;"));

            DatabaseContextFactory = new DatabaseContextFactory(
                connectionConfigurationProvider.Object,
                new DbConnectionFactory(),
                new DbCommandFactory(),
                new ThreadStaticDatabaseContextCache());

            DatabaseContextFactory.ConfigureWith("Abacus");
            QueryMapper = new QueryMapper(DatabaseGateway, DataRowMapper);
        }
예제 #3
0
        public void ToDataRow()
        {
            var customerRecord = new CustomerRecord
            {
                Id             = 1,
                FirstName      = "John",
                LastName       = "Smith",
                AccountBalance = 25.60m,
                DateJoined     = new DateTime(2018, 9, 15),
                IsActive       = true,
            };

            var propertyMapper   = new PropertyMapper <CustomerRecord>();
            var dataRowMapper    = new DataRowMapper <CustomerRecord>(propertyMapper);
            var dataColumnMapper = new DataColumnMapper <CustomerRecord>(propertyMapper);

            var dataTable = new DataTable();

            var dataColumns = dataColumnMapper.ToDataColumns().ToArray();

            dataTable.Columns.AddRange(dataColumns);

            var dataRow = dataRowMapper.ToDataRow(dataTable, customerRecord);

            CustomerRecordAssert.Equal(customerRecord, dataRow);
        }
예제 #4
0
        public void ToDataTableNoRows()
        {
            var customerRecords = new List <CustomerRecord>();

            var propertyMapper   = new PropertyMapper <CustomerRecord>();
            var dataColumnMapper = new DataColumnMapper <CustomerRecord>(propertyMapper);
            var dataRowMapper    = new DataRowMapper <CustomerRecord>(propertyMapper);
            var dataTableMapper  = new DataTableMapper <CustomerRecord>(dataColumnMapper, dataRowMapper);

            var dataTable = dataTableMapper.ToDataTable(customerRecords);

            Assert.Equal(customerRecords.Count, dataTable.Rows.Count);

            Assert.Equal(6, dataTable.Columns.Count);

            Assert.Equal(0, dataTable.Rows.Count);
        }
예제 #5
0
        static MapperFacade()
        {
            Mapper.CreateMap <decimal, bool>().ConvertUsing(src => Converter.ToBoolean(src));
            Mapper.CreateMap <decimal?, int?>().ConvertUsing(Converter.ToNullableInt32);
            Mapper.CreateMap <bool, decimal>().ConvertUsing(src => Converter.ToDecimal(src));
            Mapper.CreateMap <int, decimal>().ConvertUsing(src => src);
            Mapper.CreateMap <decimal, int>().ConvertUsing(src => Converter.ToInt32(src));
            Mapper.CreateMap <int?, decimal?>().ConvertUsing(src => src);

            Mapper.CreateMap <IDataReader, IEnumerable <SearchInArticlesResultItem> >();
            Mapper.CreateMap <IDataReader, IEnumerable <VisualEditFieldParams> >();
            Mapper.CreateMap <IDataReader, IEnumerable <BackendActionCacheRecord> >();

            DataRowMapper.CreateMap <SchemaInfo>();
            DataRowMapper.CreateMap <RelationData>();
            DataRowMapper.CreateMap <InsertData>();
            DataRowMapper.CreateMap <ArticleInfo>();
            DataRowMapper.CreateMap <PageInfo>();
        }
예제 #6
0
        public void ToDataTableWithMultipleRows()
        {
            var customerRecords = new List <CustomerRecord>
            {
                new CustomerRecord
                {
                    Id             = 1,
                    FirstName      = "John",
                    LastName       = "Smith",
                    AccountBalance = 25.60m,
                    DateJoined     = new DateTime(2018, 9, 15),
                    IsActive       = true,
                },

                new CustomerRecord
                {
                    Id             = 2,
                    FirstName      = "Mary",
                    LastName       = "McDonanld",
                    AccountBalance = 30.950m,
                    DateJoined     = new DateTime(2017, 4, 10),
                    IsActive       = false,
                }
            };

            var propertyMapper   = new PropertyMapper <CustomerRecord>();
            var dataColumnMapper = new DataColumnMapper <CustomerRecord>(propertyMapper);
            var dataRowMapper    = new DataRowMapper <CustomerRecord>(propertyMapper);
            var dataTableMapper  = new DataTableMapper <CustomerRecord>(dataColumnMapper, dataRowMapper);

            var dataTable = dataTableMapper.ToDataTable(customerRecords);

            Assert.Equal(customerRecords.Count, dataTable.Rows.Count);

            Assert.Equal(6, dataTable.Columns.Count);

            // TODO: VC: Assert columns equality

            CustomerRecordAssert.Equal(customerRecords, dataTable.Rows);
        }
예제 #7
0
        public static void CreateAllMappings(IMapperConfigurationExpression cfg)
        {
            cfg.CreateMap <decimal, bool>().ConvertUsing(src => Converter.ToBoolean(src));


            cfg.CreateMap <decimal?, int?>().ConvertUsing(src => Converter.ToNullableInt32(src));
            cfg.CreateMap <bool, decimal>().ConvertUsing(src => Converter.ToDecimal(src));
            cfg.CreateMap <int, decimal>().ConvertUsing(src => src);
            cfg.CreateMap <decimal, int>().ConvertUsing(src => Converter.ToInt32(src));
            cfg.CreateMap <int?, decimal?>().ConvertUsing(src => src);

            DataRowMapper.CreateMap <SearchInArticlesResultItem>(cfg);
            DataRowMapper.CreateMap <VisualEditFieldParams>(cfg);
            DataRowMapper.CreateMap <BackendActionCacheRecord>(cfg);

            DataRowMapper.CreateMap <SchemaInfo>(cfg);
            DataRowMapper.CreateMap <RelationData>(cfg);
            DataRowMapper.CreateMap <InsertData>(cfg);
            DataRowMapper.CreateMap <ArticleInfo>(cfg);
            DataRowMapper.CreateMap <PageInfo>(cfg);

            SiteMapper                        = Create <SiteMapper>(cfg, true);
            UserMapper                        = Create <UserMapper>(cfg, true);
            ContentMapper                     = Create <ContentMapper>(cfg, true);
            ToolbarButtonMapper               = Create <ToolbarButtonMapper>(cfg, true);
            BackendActionMapper               = Create <BackendActionMapper>(cfg, true);
            BackendActionStatusMapper         = Create <BackendActionStatusMapper>(cfg);
            BackendActionTypeMapper           = Create <BackendActionTypeMapper>(cfg);
            ContextMenuItemRowMapper          = Create <ContextMenuItemRowMapper>(cfg);
            ContextMenuRowMapper              = Create <ContextMenuRowMapper>(cfg);
            EntityTypeMapper                  = Create <EntityTypeMapper>(cfg, true);
            TreeNodeMapper                    = Create <TreeNodeMapper>(cfg);
            ViewTypeMapper                    = Create <ViewTypeMapper>(cfg);
            BackendActionViewMapper           = Create <BackendActionViewMapper>(cfg);
            FieldMapper                       = Create <FieldMapper>(cfg, true);
            FieldTypeMapper                   = Create <FieldTypeMapper>(cfg);
            ArticleMapper                     = Create <ArticleMapper>(cfg, true);
            ArticleRowMapper                  = Create <ArticleRowMapper>(cfg, true);
            ContainerMapper                   = Create <ContainerMapper>(cfg, true);
            ContentFormMapper                 = Create <ContentFormMapper>(cfg, true);
            ObjectValueMapper                 = Create <ObjectValueMapper>(cfg);
            ArticleListItemRowMapper          = Create <ArticleListItemRowMapper>(cfg);
            StatusHistoryItemMapper           = Create <StatusHistoryItemMapper>(cfg, true);
            StatusTypeRowMapper               = Create <StatusTypeRowMapper>(cfg, true);
            ObjectFormatSearchResultRowMapper = Create <ObjectFormatSearchResultRowMapper>(cfg);
            ObjectSearchResultRowMapper       = Create <ObjectSearchResultRowMapper>(cfg);
            ObjectFormatVersionRowMapper      = Create <ObjectFormatVersionRowMapper>(cfg);
            ObjectFormatVersionMapper         = Create <ObjectFormatVersionMapper>(cfg);
            DbMapper = Create <DbMapper>(cfg, true);
            TemplateObjectFormatDtoRowMapper = Create <TemplateObjectFormatDtoRowMapper>(cfg);
            ExternalNotificationMapper       = Create <ExternalNotificationMapper>(cfg);
            SystemNotificationMapper         = Create <SystemNotificationMapper>(cfg);
            XmlDbUpdateLogMapper             = new XmlDbUpdateLogMapper(cfg);
            XmlDbUpdateActionsLogMapper      = new XmlDbUpdateActionsLogMapper(cfg);
            ArticleScheduleMapper            = Create <ArticleScheduleMapper>(cfg, true);
            ContentConstraintMapper          = Create <ContentConstraintMapper>(cfg, true);
            ContentConstraintRuleMapper      = Create <ContentConstraintRuleMapper>(cfg, true);
            NotificationTemplateFormatMapper = Create <NotificationTemplateFormatMapper>(cfg, true);
            ContentWorkflowBindMapper        = Create <ContentWorkflowBindMapper>(cfg, true);
            ArticleWorkflowBindMapper        = Create <ArticleWorkflowBindMapper>(cfg);
            ContentLinkMapper                      = Create <ContentLinkMapper>(cfg, true);
            ArticleVersionMapper                   = Create <ArticleVersionMapper>(cfg);
            SiteFolderMapper                       = Create <SiteFolderMapper>(cfg, true);
            ContentFolderMapper                    = Create <ContentFolderMapper>(cfg, true);
            ContentGroupMapper                     = Create <ContentGroupMapper>(cfg, true);
            DynamicImageMapper                     = Create <DynamicImageMapper>(cfg, true);
            ArticleScheduleTaskMapper              = Create <ArticleScheduleTaskMapper>(cfg);
            WorkflowMapper                         = Create <WorkflowMapper>(cfg, true);
            MaskTemplateMapper                     = Create <MaskTemplateMapper>(cfg);
            VirtualFieldDataMapper                 = Create <VirtualFieldDataMapper>(cfg);
            UnionAttrMapper                        = Create <UnionAttrMapper>(cfg, true);
            UserQueryAttrMapper                    = Create <UserQueryAttrMapper>(cfg, true);
            VirtualFieldsRelationMapper            = Create <VirtualFieldsRelationMapper>(cfg);
            UnionFieldRelationCountMapper          = Create <UnionFieldRelationCountMapper>(cfg);
            BackendActionLogMapper                 = Create <BackendActionLogMapper>(cfg, true);
            ButtonTraceRowMapper                   = Create <ButtonTraceRowMapper>(cfg);
            RemovedEntitiesRowMapper               = Create <RemovedEntitiesRowMapper>(cfg);
            BackendActionLogRowMapper              = Create <BackendActionLogRowMapper>(cfg);
            ToolbarButtonRowMapper                 = Create <ToolbarButtonRowMapper>(cfg);
            SessionsLogMapper                      = Create <SessionsLogMapper>(cfg, true);
            SessionsLogRowMapper                   = Create <SessionsLogRowMapper>(cfg);
            CustomActionMapper                     = Create <CustomActionMapper>(cfg, true);
            CustomActionListItemRowMapper          = Create <CustomActionListItemRowMapper>(cfg);
            ContextMenuMapper                      = Create <ContextMenuMapper>(cfg);
            ContextMenuItemMapper                  = Create <ContextMenuItemMapper>(cfg, true);
            ContentListItemRowMapper               = Create <ContentListItemRowMapper>(cfg);
            UserListItemRowMapper                  = Create <UserListItemRowMapper>(cfg);
            UserGroupMapper                        = Create <UserGroupMapper>(cfg, true);
            UserGroupListItemRowMapper             = Create <UserGroupListItemRowMapper>(cfg);
            NotificationMapper                     = Create <NotificationMapper>(cfg, true);
            NotificationListItemRowMapper          = Create <NotificationListItemRowMapper>(cfg);
            VisualEditorPluginListItemRowMapper    = Create <VisualEditorPluginListItemRowMapper>(cfg);
            QpPluginListItemRowMapper              = Create <QpPluginListItemRowMapper>(cfg);
            QpPluginVersionListItemRowMapper       = Create <QpPluginVersionListItemRowMapper>(cfg);
            WorkflowListItemRowMapper              = Create <WorkflowListItemRowMapper>(cfg);
            VisualEditorPluginMapper               = Create <VisualEditorPluginMapper>(cfg, true);
            VisualEditorCommandMapper              = Create <VisualEditorCommandMapper>(cfg, true);
            QpPluginMapper                         = Create <QpPluginMapper>(cfg, true);
            QpPluginFieldMapper                    = Create <QpPluginFieldMapper>(cfg, true);
            QpPluginVersionMapper                  = Create <QpPluginVersionMapper>(cfg, true);
            EntityPermissionLevelMapper            = Create <EntityPermissionLevelMapper>(cfg);
            PermissionListItemRowMapper            = Create <PermissionListItemRowMapper>(cfg);
            SitePermissionMapper                   = Create <SitePermissionMapper>(cfg, true);
            ContentPermissionMapper                = Create <ContentPermissionMapper>(cfg, true);
            ArticlePermissionMapper                = Create <ArticlePermissionMapper>(cfg, true);
            WorkflowPermissionMapper               = Create <WorkflowPermissionMapper>(cfg, true);
            SiteFolderPermissionMapper             = Create <SiteFolderPermissionMapper>(cfg, true);
            EntityTypePermissionMapper             = Create <EntityTypePermissionMapper>(cfg, true);
            BackendActionPermissionMapper          = Create <BackendActionPermissionMapper>(cfg, true);
            FieldListItemRowMapper                 = Create <FieldListItemRowMapper>(cfg);
            SiteListItemRowMapper                  = Create <SiteListItemRowMapper>(cfg);
            ChildEntityPermissionListItemRowMapper = Create <ChildEntityPermissionListItemRowMapper>(cfg);
            ActionPermissionTreeNodeRowMapper      = Create <ActionPermissionTreeNodeRowMapper>(cfg);
            VisualEditorCommandRowMapper           = Create <VisualEditorCommandRowMapper>(cfg);
            PageTemplateRowMapper                  = Create <PageTemplateRowMapper>(cfg, true);
            PageTemplateSearchResultRowMapper      = Create <PageTemplateSearchResultRowMapper>(cfg, true);
            PageRowMapper                      = Create <PageRowMapper>(cfg, true);
            ObjectRowMapper                    = Create <ObjectRowMapper>(cfg, true);
            VisualEditorStyleRowMapper         = Create <VisualEditorStyleRowMapper>(cfg);
            CharsetMapper                      = Create <CharsetMapper>(cfg, true);
            VisualEditorStyleListItemRowMapper = Create <VisualEditorStyleListItemRowMapper>(cfg);
            VisualEditorStyleMapper            = Create <VisualEditorStyleMapper>(cfg, true);
            StatusTypeListItemRowMapper        = Create <StatusTypeListItemRowMapper>(cfg);
            WorkFlowRuleMapper                 = Create <WorkFlowRuleMapper>(cfg, true);
            NetLanguageMapper                  = Create <NetLanguageMapper>(cfg, true);
            LocaleMapper           = Create <LocaleMapper>(cfg, true);
            PageTemplateMappper    = Create <PageTemplateMappper>(cfg, true);
            PageMapper             = Create <PageMapper>(cfg, true);
            ObjectMapper           = Create <ObjectMapper>(cfg, true);
            ObjectTypeMapper       = Create <ObjectTypeMapper>(cfg, true);
            ObjectFormatMapper     = Create <ObjectFormatMapper>(cfg, true);
            ObjectFormatRowMapper  = Create <ObjectFormatRowMapper>(cfg);
            StatusTypeMapper       = Create <StatusMapper>(cfg, true);
            SiteFolderRowMapper    = Create <SiteFolderRowMapper>(cfg);
            ContentFolderRowMapper = Create <ContentFolderRowMapper>(cfg);
        }