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(); } }
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(); }
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; }
public void NoMapperRepository_GetEntity() { var sqlMapper = SmartSqlBuilder.GetSqlMapper(); var repository = _repositoryFactory.CreateInstance(typeof(INoMapperRepository), sqlMapper) as INoMapperRepository; var entity = repository.GetAllPrimitive(); }
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; }
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()) { } }
public static void InitSmartSql() { if (smartSqlBuilder == null) { smartSqlBuilder = new SmartSqlBuilder() .UseXmlConfig() .Build(); } }
protected void InitFilters(SmartSqlBuilder smartSqlBuilder) { if (FilterType == null) { return; } Filters = smartSqlBuilder.SmartSqlConfig.Filters.Where(f => FilterType.IsInstanceOfType(f)) .Select(f => f as IInvokeMiddlewareFilter).ToList(); }
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)); }
public static SmartSqlBuilder GetSmartSqlBuilder() { if (smartSqlBuilder == null) { smartSqlBuilder = new SmartSqlBuilder() .UseXmlConfig() .Build(); } return(smartSqlBuilder); }
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; })); }
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); }
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(); }
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); }
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); }
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()) { } }
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; }
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(); }
// 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()); }); }
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)); }
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>()); }