Beispiel #1
0
 public void NoMapperRepository_GetGuidFromDb()
 {
     var sqlMapper      = SmartSqlBuilder.GetSqlMapper();
     var repository     = _repositoryFactory.CreateInstance(typeof(INoMapperRepository), sqlMapper) as INoMapperRepository;
     var innerSqlMapper = repository.SqlMapper;
     var guid           = repository.GetGuidFromDb();
 }
        public void Insert()
        {
            var dbSessionFactory = new SmartSqlBuilder()
                                   .UseDataSource(DbProvider.MYSQL_CONNECTOR, "Data Source=localhost;database=SmartSqlTestDB;uid=root;pwd=root")
                                   .UseAlias("MySqlConnectorTest")
                                   .Build().GetDbSessionFactory();

            var list = new List <User>
            {
                new() { Id = 1, UserName = "******", IsDelete = true },
                new() { Id = 2, UserName = "******", IsDelete = false }
            };

            using var dbSession = dbSessionFactory.Open();
            var data = list.ToDataTable();

            data.TableName = "t_user";
            var bulkInsert = new BulkInsert(dbSession)
            {
                SecureFilePriv = "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads",
                Table          = data
            };

            bulkInsert.Expressions.Add("user_name = upper(user_name)");
            bulkInsert.Expressions.Add("is_delete = convert(is_delete, unsigned )");
            bulkInsert.Insert();
        }
    }
Beispiel #3
0
        public void Insert()
        {
            var dbSessionFactory = new SmartSqlBuilder()
                                   .UseDataSource(DbProvider.POSTGRESQL, "Server=localhost;Database=SmartSqlTestDB;Port=5432;User Id=postgres;Password=SmartSql.net;")
                                   .UseAlias("PostgreSqlTest")
                                   .Build().GetDbSessionFactory();

            var list = new List <User> {
                new User {
                    Id = 1, UserName = "******"
                }
                , new User {
                    Id = 2, UserName = "******"
                }
            };

            using (var dbSession = dbSessionFactory.Open())
            {
                var data = list.ToDataTable();
                data.Columns.RemoveAt(0);
                data.Columns["UserName"].ColumnName = "user_name";
                data.Columns["Status"].ColumnName   = "status";
                data.TableName = "t_user";
                BulkInsert bulkInsert = new BulkInsert(dbSession);
                bulkInsert.Table = data;
                bulkInsert.Insert();
            }
        }
        public void Build()
        {
            var smartSqlBuilder = new SmartSqlBuilder().UseXmlConfig().Build();
            var repositoryType  = RepositoryBuilder.Build(typeof(IAllPrimitiveRepository), smartSqlBuilder.SmartSqlConfig);

            Assert.NotNull(repositoryType);
        }
 public void Build_By_Xml()
 {
     var dbSessionFactory = new SmartSqlBuilder()
                            .UseXmlConfig()
                            .UseAlias("Build_By_Xml")
                            .Build();
 }
 public void Build_As_Mapper()
 {
     var sqlMapper = new SmartSqlBuilder()
                     .UseXmlConfig()
                     .Build()
                     .GetSqlMapper();
 }
Beispiel #7
0
        public void Insert()
        {
            var dbSessionFactory = new SmartSqlBuilder()
                                   .UseDataSource(DbProvider.MYSQL, "Data Source=localhost;database=SmartSqlTestDB;uid=root;pwd=SmartSql.net")
                                   .UseAlias("MySqlTest")
                                   .Build().GetDbSessionFactory();

            var list = new List <User> {
                new User {
                    Id = 3, UserName = "******"
                }
                , new User {
                    Id = 4, UserName = "******"
                }
            };

            using (var dbSession = dbSessionFactory.Open())
            {
                var data = list.ToDataTable();
                data.Columns.RemoveAt(0);
                data.TableName = "t_user";
                BulkInsert bulkInsert = new BulkInsert(dbSession)
                {
                    SecureFilePriv = "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads",
                    Table          = data
                };
                bulkInsert.Insert();
            }
        }
        private void InitParameters()
        {
            var dataSource = _project.DataSource;

            dataSource.Parameters.EnsureValue("DbProvider", out string dbProvider);
            dataSource.Parameters.EnsureValue("ConnectionString", out String connString);
            dataSource.Parameters.Value("PKColumn", out string pkColumn);
            PKColumn = pkColumn;
            dataSource.Parameters.Value("ModifyTime", out string modifyTime);
            ModifyTime = modifyTime;
            dataSource.Parameters.Value("PkIsNumeric", out bool pkIsNumeric);
            PkIsNumeric = pkIsNumeric;
            dataSource.Parameters.Value("AutoIncrement", out bool autoIncrement);
            AutoIncrement = autoIncrement;
            dataSource.Parameters.EnsureValue("Query", out string queryCmd);
            QueryCmd = queryCmd;

            #region CreateSqlMapper

            SqlMapper = new SmartSqlBuilder()
                        .UseAlias(Name)
                        .UseLoggerFactory(_loggerFactory)
                        .UseDataSource(dbProvider, connString)
                        .Build().SqlMapper;

            #endregion

            TotalCmd = dataSource.Parameters.Value("Total", out String totalCmd)
                ? totalCmd
                : $"Select Count(*) From ({QueryCmd.TrimEnd(';')}) as t;";

            _project.DataSource.Parameters.Value("BulkSize", out int bulkSize);
            BulkSize = bulkSize;
        }
Beispiel #9
0
        public void NoMapperRepository_GetEntity()
        {
            var sqlMapper  = SmartSqlBuilder.GetSqlMapper();
            var repository = _repositoryFactory.CreateInstance(typeof(INoMapperRepository), sqlMapper) as INoMapperRepository;

            var entity = repository.GetAllPrimitive();
        }
Beispiel #10
0
 public override void SetupSmartSql(SmartSqlBuilder smartSqlBuilder)
 {
     InitFilters(smartSqlBuilder);
     _logger             = smartSqlBuilder.SmartSqlConfig.LoggerFactory.CreateLogger <PrepareStatementMiddleware>();
     _sqlParamAnalyzer   = smartSqlBuilder.SmartSqlConfig.SqlParamAnalyzer;
     _dbProviderFactory  = smartSqlBuilder.SmartSqlConfig.Database.DbProvider.Factory;
     _typeHandlerFactory = smartSqlBuilder.SmartSqlConfig.TypeHandlerFactory;
 }
Beispiel #11
0
 public virtual void SetupSmartSql(SmartSqlBuilder smartSqlBuilder)
 {
     SmartSqlConfig = smartSqlBuilder.SmartSqlConfig;
     Logger         = SmartSqlConfig.LoggerFactory.CreateLogger <AbstractCacheManager>();
     Reset();
     Timer = new Timer(FlushOnInterval, null, DueTime, PeriodTime);
     ListenInvokeSucceeded();
 }
        public void Build_By_DataSource()
        {
            var dbSessionFactory = new SmartSqlBuilder()
                                   .UseDataSource(DbProvider.SQLSERVER, ConnectionString)
                                   .Build().GetDbSessionFactory();

            using (var dbSession = dbSessionFactory.Open())
            {
            }
        }
Beispiel #13
0
 public static void InitSmartSql()
 {
     if (smartSqlBuilder == null)
     {
         smartSqlBuilder =
             new SmartSqlBuilder()
             .UseXmlConfig()
             .Build();
     }
 }
Beispiel #14
0
        protected void InitFilters(SmartSqlBuilder smartSqlBuilder)
        {
            if (FilterType == null)
            {
                return;
            }

            Filters = smartSqlBuilder.SmartSqlConfig.Filters.Where(f => FilterType.IsInstanceOfType(f))
                      .Select(f => f as IInvokeMiddlewareFilter).ToList();
        }
Beispiel #15
0
        public void SmartSqlBuilder_ShouldUseTheGeneratorsInTheAppropriateOrder()
        {
            var mockSqlBuilder = new Mock <ISqlQuery>(MockBehavior.Strict);
            var seq            = new MockSequence();

            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference2))),
                       It.Is <PropertyInfo>(y => y == typeof(Goal_Node).GetProperty(nameof(Goal_Node.Id)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.LeftJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == typeof(Node5).GetProperty(nameof(Node5.Reference)))));

            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Goal_Node).GetProperty(nameof(Goal_Node.Reference))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.SimpleColumnSelection)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.IdSelection)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Foo))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.SelectionFromAlreadyJoinedTable)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Node5).GetProperty(nameof(Node5.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.SelectionFromAnotherRoute)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Node5).GetProperty(nameof(Node5.Reference))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.SecondSelectionFromAnotherRoute)))));

            Config.Use(new SpecifiedDataTables(typeof(Start_Node), typeof(Goal_Node), typeof(Node2), typeof(Node4), typeof(Node5), typeof(Node6), typeof(Node7), typeof(Node8)));

            SmartSqlBuilder <View1> .Build(_ => mockSqlBuilder.Object);

            mockSqlBuilder.Verify(x => x.InnerJoin(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Exactly(2));
            mockSqlBuilder.Verify(x => x.LeftJoin(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Once);
            mockSqlBuilder.Verify(x => x.Select(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Exactly(5));
        }
Beispiel #16
0
 public static SmartSqlBuilder GetSmartSqlBuilder()
 {
     if (smartSqlBuilder == null)
     {
         smartSqlBuilder =
             new SmartSqlBuilder()
             .UseXmlConfig()
             .Build();
     }
     return(smartSqlBuilder);
 }
Beispiel #17
0
 public void CreateInstance()
 {
     var sqlMapper  = SmartSqlBuilder.GetSqlMapper();
     var repository = _repositoryFactory.CreateInstance(typeof(IAllPrimitiveRepository), sqlMapper) as IAllPrimitiveRepository;
     var list       = repository.Query(10);
     var id         = repository.Insert(new Entities.AllPrimitive
     {
         String   = "",
         DateTime = DateTime.Now
     });
 }
        public void Add()
        {
            var builder = new SmartSqlBuilder()
                          .UseDataSource("SqlServer", "Data Source=.;Initial Catalog=SmartSqlTestDB;Integrated Security=True")
                          .UseAlias("DeserializerFactoryTest")
                          .AddDeserializer(new CustomDeserializer()).Build();
            var result = builder.SqlMapper.QuerySingle <CustomResultType>(new RequestContext
            {
                RealSql = "Select NewId()"
            });

            Assert.NotNull(result);
        }
 public static SmartSqlDIBuilder AddSmartSql(this IServiceCollection services, Action <IServiceProvider, SmartSqlBuilder> setup)
 {
     return(services.AddSmartSql(sp =>
     {
         var configPath = ResolveConfigPath(sp);
         var loggerFactory = sp.GetService <ILoggerFactory>();
         var smartSqlBuilder = new SmartSqlBuilder()
                               .UseLoggerFactory(loggerFactory)
                               .UseXmlConfig(SmartSql.ConfigBuilder.ResourceType.File, configPath);
         setup(sp, smartSqlBuilder);
         return smartSqlBuilder;
     }));
 }
Beispiel #20
0
        public void Setup()
        {
            BaseSetup();
            var smartSqlBuilder = new SmartSqlBuilder()
                                  .UseProperties(new[]
            {
                new KeyValuePair <string, string>("ConnectionString", _connection.ConnectionString)
            })
                                  .UseXmlConfig(ResourceType.File, "SmartSql/SmartSqlMapConfig.xml")
                                  .UseCache(false).Build();

            _dbSession = smartSqlBuilder.GetDbSessionFactory().Open(_connection.ConnectionString);
        }
Beispiel #21
0
        public void Setup()
        {
            Scope = nameof(AllPrimitive);
            var smartSqlBuilder = new SmartSqlBuilder().UseXmlConfig().UseCache(false).Build();

            DbSessionFactory = smartSqlBuilder.GetDbSessionFactory();
            var repositoryBuilder = new EmitRepositoryBuilder(null, null, Microsoft.Extensions.Logging.Abstractions.NullLogger.Instance);
            var repositoryFactory = new RepositoryFactory(repositoryBuilder, Microsoft.Extensions.Logging.Abstractions.NullLogger.Instance);

            Repository = repositoryFactory.CreateInstance(typeof(IAllPrimitiveRepository), smartSqlBuilder.SqlMapper) as IAllPrimitiveRepository;

            WriteDataSource = DbSessionFactory.SmartSqlConfig.Database.Write;
            Query_1();
        }
Beispiel #22
0
        public void CustomDeserialize()
        {
            var builder = new SmartSqlBuilder()
                          .UseDataSource("MySql", "server=localhost;uid=root;pwd=root;database=SmartSqlTestDB")
                          .UseAlias("DeserializerFactoryTest")
                          .AddDeserializer(new CustomDeserializer())
                          .Build();
            var result = builder.SqlMapper.QuerySingle <CustomResultType>(new RequestContext
            {
                RealSql = "Select uuid()"
            });

            Assert.NotNull(result);
            Assert.NotEqual(Guid.Empty, result.Id);
        }
Beispiel #23
0
        public void SmartSqlBuilder_GenerateBuildAction_GroupBy_Test()
        {
            var mockSqlBuilder = new Mock <ISqlQuery>(MockBehavior.Strict);

            mockSqlBuilder
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Id)))));
            mockSqlBuilder
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Foo)))));
            mockSqlBuilder
            .Setup(x => x.SelectCount(
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Count)))));

            mockSqlBuilder
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference)))));

            mockSqlBuilder
            .Setup(x => x.GroupBy(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id)))));
            mockSqlBuilder
            .Setup(x => x.GroupBy(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute)))));

            Config.Use(new SpecifiedDataTables(typeof(Start_Node), typeof(Goal_Node), typeof(Node2), typeof(Node4), typeof(Node5), typeof(Node6), typeof(Node7), typeof(Node8)));

            SmartSqlBuilder <View2> .Build(_ => mockSqlBuilder.Object);

            mockSqlBuilder.Verify(x => x.InnerJoin(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Once);
            mockSqlBuilder.Verify(
                x => x.Select(
                    It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                    It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Id)))),
                Times.Once);
            mockSqlBuilder.Verify(
                x => x.Select(
                    It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute))),
                    It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Foo)))),
                Times.Once);
            mockSqlBuilder.Verify(x => x.SelectCount(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Once);
            mockSqlBuilder.Verify(x => x.GroupBy(typeof(Start_Node).GetProperty(nameof(Start_Node.Id))), Times.Once);
            mockSqlBuilder.Verify(x => x.GroupBy(typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute))), Times.Once);
        }
Beispiel #24
0
        public void Build_By_DataSource()
        {
            var dbSessionFactory = new SmartSqlBuilder()
                                   .UseDataSource(DbProvider.SQLSERVER, ConnectionString)
                                   .UseAlias("Build_By_DataSource")
                                   .AddTypeHandler(new Configuration.TypeHandler
            {
                Name        = "Json",
                HandlerType = typeof(JsonTypeHandler)
            })
                                   .Build().GetDbSessionFactory();

            using (var dbSession = dbSessionFactory.Open())
            {
            }
        }
Beispiel #25
0
        public SmartSqlFixture()
        {
            LoggerFactory = new LoggerFactory(Enumerable.Empty <ILoggerProvider>(),
                                              new LoggerFilterOptions {
                MinLevel = LogLevel.Debug
            });
            var logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs", "SmartSql.log");

            LoggerFactory.AddFile(logPath, LogLevel.Trace);

            SmartSqlBuilder = new SmartSqlBuilder()
                              .UseXmlConfig()
                              .UseLoggerFactory(LoggerFactory)
                              .UseAlias(GLOBAL_SMART_SQL)
                              .Build();
            DbSessionFactory = SmartSqlBuilder.DbSessionFactory;
            SqlMapper        = SmartSqlBuilder.SqlMapper;
        }
Beispiel #26
0
        public SmartSqlFixture()
        {
            LoggerFactory = new LoggerFactory(Enumerable.Empty <ILoggerProvider>(),
                                              new LoggerFilterOptions {
                MinLevel = LogLevel.Debug
            });
            var logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs", "SmartSql.log");

            LoggerFactory.AddFile(logPath, LogLevel.Trace);
            SmartSqlBuilder = new SmartSqlBuilder()
                              .UseXmlConfig()
                              .UseLoggerFactory(LoggerFactory)
                              .UseAlias(GLOBAL_SMART_SQL)
                              .AddFilter <TestPrepareStatementFilter>()
                              .RegisterEntity(typeof(AllPrimitive))
                              // .RegisterEntity(new TypeScanOptions
                              // {
                              //     AssemblyString = "SmartSql.Test",
                              //     Filter = type => type.Namespace == "SmartSql.Test.Entities"
                              // })
                              .UseCUDConfigBuilder()
                              .Build();
            DbSessionFactory = SmartSqlBuilder.DbSessionFactory;
            SqlMapper        = SmartSqlBuilder.SqlMapper;

            RepositoryBuilder = new EmitRepositoryBuilder(null, null,
                                                          LoggerFactory.CreateLogger <EmitRepositoryBuilder>());
            RepositoryFactory = new RepositoryFactory(RepositoryBuilder,
                                                      LoggerFactory.CreateLogger <RepositoryFactory>());
            UsedCacheRepository =
                RepositoryFactory.CreateInstance(typeof(IUsedCacheRepository), SqlMapper) as
                IUsedCacheRepository;
            AllPrimitiveRepository =
                RepositoryFactory.CreateInstance(typeof(IAllPrimitiveRepository), SqlMapper) as
                IAllPrimitiveRepository;
            UserRepository =
                RepositoryFactory.CreateInstance(typeof(IUserRepository), SqlMapper) as
                IUserRepository;
            ColumnAnnotationRepository =
                RepositoryFactory.CreateInstance(typeof(IColumnAnnotationRepository), SqlMapper) as
                IColumnAnnotationRepository;
            InitTestData();
        }
 public void Build_By_Config()
 {
     DbProviderManager.Instance.TryGet(DbProvider.SQLSERVER, out var dbProvider);
     var dbSessionFactory = new SmartSqlBuilder()
                            .UseNativeConfig(new Configuration.SmartSqlConfig
     {
         Database = new Database
         {
             DbProvider = dbProvider,
             Write      = new WriteDataSource
             {
                 Name             = "Write",
                 ConnectionString = ConnectionString,
                 DbProvider       = dbProvider
             },
             Reads = new Dictionary <String, ReadDataSource>()
         }
     })
                            .Build();
 }
Beispiel #28
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

            var sqliteConnection = new SqliteConnection("DataSource=:memory:");

            sqliteConnection.Open();

            services.AddEntityFrameworkSqlite().AddDbContext <SampleDbContext>(c => c.UseSqlite(sqliteConnection));

            services.AddSingleton <ISamplingInterceptor, CustomSamplingInterceptor>();
            services.AddSmartSql(sp =>
            {
                return(SmartSqlBuilder
                       .AddDataSource(DbProvider.SQLSERVER, "Data Source=.;Initial Catalog=SmartSqlTestDB;Integrated Security=True")
                       .UseLoggerFactory(sp.GetService <ILoggerFactory>())
                       .UseCache(false)
                       .Build());
            });
        }
Beispiel #29
0
        public void SmartSqlBuilder_ShouldWorkWithComplexViews()
        {
            Config.Use(new SpecifiedDataTables(typeof(Start_Node), typeof(Goal_Node), typeof(Node2), typeof(Node4), typeof(Node5), typeof(Node6), typeof(Node7), typeof(Node8)));

            var mockSqlBuilder = new Mock <ISqlQuery>(MockBehavior.Strict);
            var seq            = new MockSequence();

            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference2))),
                       It.Is <PropertyInfo>(y => y == typeof(Goal_Node).GetProperty(nameof(Goal_Node.Id)))));

            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Goal_Node).GetProperty(nameof(Goal_Node.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <Extension1> .Type.GetProperty(nameof(Extension1.IdSelection)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <Extension1> .Type.GetProperty(nameof(Extension1.Id)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <Extension1> .Type.GetProperty(nameof(Extension1.ReferenceWithoutAttribute)))));

            SmartSqlBuilder <Extension1> .Build(_ => mockSqlBuilder.Object);

            mockSqlBuilder.Verify(x => x.InnerJoin(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Exactly(2));
            mockSqlBuilder.Verify(x => x.Select(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Exactly(3));
        }
Beispiel #30
0
        public RepositoryBuilderTest()
        {
            var loggerFactory = new LoggerFactory(Enumerable.Empty <ILoggerProvider>(),
                                                  new LoggerFilterOptions {
                MinLevel = LogLevel.Debug
            });
            var logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs",
                                       "SmartSql-RepositoryBuilderTest.log");

            loggerFactory.AddFile(logPath, LogLevel.Trace);

            var smartSqlBuilder = new SmartSqlBuilder()
                                  .UseXmlConfig()
                                  .UseLoggerFactory(loggerFactory)
                                  .UseAlias(nameof(RepositoryBuilderTest) + Guid.NewGuid())
                                  .AddFilter <TestPrepareStatementFilter>()
                                  .Build();

            SqlMapper          = smartSqlBuilder.SqlMapper;
            _repositoryBuilder = new EmitRepositoryBuilder(null, null,
                                                           loggerFactory.CreateLogger <EmitRepositoryBuilder>());
            _repositoryFactory = new RepositoryFactory(_repositoryBuilder,
                                                       loggerFactory.CreateLogger <RepositoryFactory>());
        }