public static void Main(string[] args)
        {
            DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);

            var host = CreateHostBuilder(args).Build();

            using (var scope = host.Services.CreateScope())
            {
                var services = scope.ServiceProvider;
                try
                {
                    var context = services.GetRequiredService <CookingContext>();
                    DbInitializer.Initialize(context);
                }
                catch (Exception ex)
                {
                    var logger = services.GetRequiredService <ILogger <Program> >();
                    logger.LogError(ex, "An error occurred while seeding the database.");
                }
            }
            host.Run();
        }
Exemple #2
0
        protected override void OnStartup(StartupEventArgs e)
        {
            //var sqLiteProviderInfo = new DbProviderInfo
            //{
            //    Name = "SQLite Data Provider",
            //    InvariantName = "System.Data.SQLite",
            //    Description = ".NET Framework Data Provider for SQLite",
            //    AssemblyQualifiedName = "System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.110.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
            //};
            //DbProvider.RegisterProvider(sqLiteProviderInfo);

            //var oracleProviderInfo = new DbProviderInfo
            //{
            //    Name = "ODP.NET, Managed Driver",
            //    InvariantName = "Oracle.ManagedDataAccess.Client",
            //    Description = "Oracle Data Provider for .NET, Managed Driver",
            //    AssemblyQualifiedName = "Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.18.3, Culture=neutral, PublicKeyToken=89b483f429c47342"
            //};
            //DbProvider.RegisterProvider(oracleProviderInfo);

            var languageService = ServiceLocator.Default.ResolveType <ILanguageService>();

            // Note: it's best to use .CurrentUICulture in actual apps since it will use the preferred language
            // of the user. But in order to demo multilingual features for devs (who mostly have en-US as .CurrentUICulture),
            // we use .CurrentCulture for the sake of the demo
            languageService.PreferredCulture = CultureInfo.CurrentCulture;
            languageService.FallbackCulture  = new CultureInfo("en-US");

            Log.Info("Starting application");
            Log.Info("This log message should show up as debug");

            this.ApplyTheme();

#if NETCORE
            DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
#endif

            base.OnStartup(e);
        }
Exemple #3
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appSettings.json", false, true);
            IConfigurationRoot configurationRoot = builder.Build();
            var providerName     = configurationRoot.GetSection("AppConfig").GetChildren().Single(item => item.Key == "ProviderName").Value;
            var connectionString = configurationRoot.GetConnectionString("ConnectionString");


            DbProviderFactories.RegisterFactory(providerName, SqlClientFactory.Instance);

            Passenger passenger = new Passenger()
            {
                Name     = "Akchurin Nail",
                ToFly    = "Dubai",
                TimeExit = DateTime.Now,
                Registr  = true,
            };



            //repository.GetAll();
        }
Exemple #4
0
        public void TestSetUp()
        {
            DatabaseGateway      = new DatabaseGateway();
            DatabaseContextCache = new ThreadStaticDatabaseContextCache();

#if (!NETCOREAPP2_1 && !NETSTANDARD2_0)
            DatabaseContextFactory = new DatabaseContextFactory(
                new ConnectionConfigurationProvider(),
                new DbConnectionFactory(),
                new DbCommandFactory(),
                new ThreadStaticDatabaseContextCache());
#else
            DbProviderFactories.RegisterFactory("System.Data.SqlClient", System.Data.SqlClient.SqlClientFactory.Instance);

            var mockConnectionConfigurationProvider = new Mock <IConnectionConfigurationProvider>();

            mockConnectionConfigurationProvider.Setup(m => m.Get(It.IsAny <string>())).Returns(
                (string name) =>
                name.Equals("EventStoreProjection")
                        ? new ConnectionConfiguration(
                    "EventStoreProjection",
                    "System.Data.SqlClient",
                    "Data Source=.\\sqlexpress;Initial Catalog=ShuttleProjection;Integrated Security=SSPI;")
                        : new ConnectionConfiguration(
                    name,
                    "System.Data.SqlClient",
                    "Data Source=.\\sqlexpress;Initial Catalog=Shuttle;Integrated Security=SSPI;"));

            ConnectionConfigurationProvider = mockConnectionConfigurationProvider.Object;

            DatabaseContextFactory = new DatabaseContextFactory(
                ConnectionConfigurationProvider,
                new DbConnectionFactory(),
                new DbCommandFactory(),
                new ThreadStaticDatabaseContextCache());
#endif

            ClearDataStore();
        }
Exemple #5
0
        static void Main(string[] args)
        {
            DbProviderFactories.RegisterFactory("sqlServer", SqlClientFactory.Instance);
            string            conectionString = @"Data Source=DESKTOP-OF28PIK\SQLEXPRESS;Initial Catalog=exc;Integrated Security=True";
            DbProviderFactory sqlFactory      = DbProviderFactories.GetFactory("sqlServer");
            AdresBeheer       adresbeheer     = new AdresBeheer(sqlFactory, conectionString);

            adresbeheer.AddGMLAdressesDB();
            AdresRequest req = new AdresRequest(sqlFactory, conectionString);

            //Straatnaam straattest = new Straatnaam(65927, "kkakak", new Gemeente(65927, "Gent"));
            //Adres test = new Adres(20, straattest, "20b", "2a", "45", "standaard", 9000, 12.45, 89.45);
            //adresbeheer.voegAdresToe(test);
            System.Console.WriteLine("-----------------------------------------------------------------------");
            System.Console.WriteLine("-----------------------------------------------------------------------");
            System.Console.WriteLine("adres van id : 2000000004");
            Adres adresRequestTest = req.GetAdres(2000000004);

            System.Console.WriteLine(adresRequestTest);
            System.Console.WriteLine("-----------------------------------------------------------------------");
            System.Console.WriteLine("Straatnamen van alle Gent alfabetisch gesorteerd :");
            List <Straatnaam> straatnamen = req.getStraatnamen("Gent");

            foreach (Straatnaam straatnaam in straatnamen)
            {
                System.Console.WriteLine(straatnaam);
            }
            System.Console.WriteLine("-----------------------------------------------------------------------");
            System.Console.WriteLine("Alle adressen die tot deze straatnaam met id 6 behoort :");
            List <Adres> adressen = req.getAdressenStraat(6);

            foreach (Adres adres in adressen)
            {
                System.Console.WriteLine(adres);
            }
            System.Console.WriteLine("-----------------------------------------------------------------------");
            System.Console.WriteLine("-----------------------------------------------------------------------");
        }
Exemple #6
0
        static void Main(string[] args)
        {
            #region
            var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json", false, true);
            IConfigurationRoot configurationRoot = builder.Build();
            var connectionString = configurationRoot.GetConnectionString("DebugConnectionString");
            var providerName     = configurationRoot.GetSection("AppConfig").GetChildren().Single(item => item.Key == "ProviderName").Value;

            DbProviderFactories.RegisterFactory(providerName, SqlClientFactory.Instance);

            Repository <Category> repository = new Repository <Category>(connectionString, providerName);



            #endregion
            #region Repository Test
            //Category category2 = new Category
            //{
            //    Name = "Мышки",
            //    ImagePath = @"C:/data",
            //};

            //Repository<Category> repository = new Repository<Category>(configurationRoot.GetConnectionString("DebugConnectionString"));
            //repository.Add(category2);
            //var res = repository.GetAll();

            //Repository<User> repository = new Repository<User>("");
            //repository.Add(new User
            //{
            //    Address = "Abay st. 129",
            //    Email = "*****@*****.**",
            //    Password = "******",
            //    PhoneNumber = "+77786226134",
            //    VerificationCode = "123"
            //});
            #endregion
        }
Exemple #7
0
        public async Task QueryAsync_SqlQuery_ExecutesQueryWithExpectedResults()
        {
            const string ProviderName = "System.Data.SqlClient";

#if !NET472
            if (DbProviderFactories.GetProviderInvariantNames().Any(s => string.Equals(s, ProviderName, StringComparison.Ordinal)) == false)
            {
                Trace.WriteLine($"Registering {ProviderName} factory");
                DbProviderFactories.RegisterFactory(ProviderName, SqlClientFactory.Instance);
            }
#endif
            var connectionString   = ConfigurationRoot.GetConnectionString("MasterDatabase");
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var repositoryAdapter  = new TransactSqlAdapter(definitionProvider);

            await using (var target = new DatabaseContext(connectionString, ProviderName, repositoryAdapter))
            {
                var tables = target.QueryAsync <dynamic>("SELECT * FROM sys.tables WHERE [type] = @0", CancellationToken.None, 'U');
                var count  = 0;

                await foreach (var table in tables)
                {
                    Assert.IsNotNull(table.name);
                    Assert.IsTrue(table.object_id > 0);
                    count++;
                }

                Assert.AreNotEqual(0, count);

                var tableCount = await target.ExecuteScalarAsync <int>(
                    "SELECT COUNT(1) FROM sys.tables WHERE [type] = @0",
                    CancellationToken.None,
                    'U');

                Assert.AreNotEqual(0, tableCount);
            }
        }
Exemple #8
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRouting();
            services.AddMvc(config =>
            {
            });

            services.AddGenericBackend()
            .ConfigureMiddleware(m =>
            {
                m.Prefix = "/rest";
            })
            .ConfigureOpenApiGeneration(o =>
            {
                o.PersistResultSets = true;
            })
            .AddFileSupport()
            .AddXmlSupport()
            .AddSystemParameters();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "My API", Version = "v1"
                });
                c.AddGenericBackend();
            });
            if (!DbProviderFactories.TryGetFactory("System.Data.SqlClient", out var _))
            {
                DbProviderFactories.RegisterFactory("System.Data.SqlClient", System.Data.SqlClient.SqlClientFactory.Instance);
            }
            services.AddScoped(typeof(DbConnection), (s) =>
            {
                var conf   = s.GetRequiredService <IConfiguration>();
                var constr = conf["ConnectionStrings:DefaultConnection"];
                return(Kull.Data.DatabaseUtils.GetConnectionFromEFString(constr, true));
            });
        }
Exemple #9
0
        /// <summary>
        /// 根据提供程序的固定名称获取<see cref="DbProviderFactory"/>对象。
        /// </summary>
        /// <param name="providerName"></param>
        /// <returns></returns>
        public virtual DbProviderFactory GetFactory(string providerName)
        {
#if NETFRAMEWORK
            return(DbProviderFactories.GetFactory(providerName));
#else
            if (DbProviderFactories.TryGetFactory(providerName, out DbProviderFactory providerFactory))
            {
                return(providerFactory);
            }
            var providerFactoryType = typeof(DbProviderFactory);
            foreach (var assemblie in AppDomain.CurrentDomain.GetAssemblies())
            {
                if (assemblie.GlobalAssemblyCache)
                {
                    continue;
                }
                var factoryType = assemblie.GetTypes().FirstOrDefault((t) => t.Namespace == providerName && t.IsSubclassOf(providerFactoryType));
                if (factoryType != null)
                {
                    DbProviderFactories.RegisterFactory(factoryType.Namespace, factoryType);
                    return(DbProviderFactories.GetFactory(providerName));
                }
            }
            var path = System.IO.Path.GetFullPath(System.IO.Path.ChangeExtension(providerName, "dll"));
            if (System.IO.File.Exists(path))
            {
                var assembly    = Assembly.LoadFile(path);
                var factoryType = assembly.GetTypes().FirstOrDefault((t) => t.Namespace == providerName && t.IsSubclassOf(providerFactoryType));
                if (factoryType != null)
                {
                    DbProviderFactories.RegisterFactory(factoryType.Namespace, factoryType);
                    return(DbProviderFactories.GetFactory(providerName));
                }
            }
            return(null);
#endif
        }
Exemple #10
0
    /// <summary>
    ///     Add required services for SQL Server support.
    /// </summary>
    public static IUmbracoBuilder AddUmbracoSqlServerSupport(this IUmbracoBuilder builder)
    {
        builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ISqlSyntaxProvider, SqlServerSyntaxProvider>());
        builder.Services.TryAddEnumerable(ServiceDescriptor
                                          .Singleton <IBulkSqlInsertProvider, SqlServerBulkSqlInsertProvider>());
        builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDatabaseCreator, SqlServerDatabaseCreator>());

        builder.Services.TryAddEnumerable(ServiceDescriptor
                                          .Singleton <IDatabaseProviderMetadata, SqlLocalDbDatabaseProviderMetadata>());
        builder.Services.TryAddEnumerable(ServiceDescriptor
                                          .Singleton <IDatabaseProviderMetadata, SqlServerDatabaseProviderMetadata>());
        builder.Services.TryAddEnumerable(ServiceDescriptor
                                          .Singleton <IDatabaseProviderMetadata, SqlAzureDatabaseProviderMetadata>());

        builder.Services.TryAddEnumerable(ServiceDescriptor
                                          .Singleton <IDistributedLockingMechanism, SqlServerDistributedLockingMechanism>());

        builder.Services.TryAddEnumerable(ServiceDescriptor
                                          .Singleton <IProviderSpecificInterceptor, SqlServerAddMiniProfilerInterceptor>());
        builder.Services.TryAddEnumerable(ServiceDescriptor
                                          .Singleton <IProviderSpecificInterceptor, SqlServerAddRetryPolicyInterceptor>());

        DbProviderFactories.UnregisterFactory(Constants.ProviderName);
        DbProviderFactories.RegisterFactory(Constants.ProviderName, SqlClientFactory.Instance);

        // Support provider name set by the configuration API for connection string environment variables
        builder.Services.ConfigureAll <ConnectionStrings>(options =>
        {
            if (options.ProviderName == "System.Data.SqlClient")
            {
                options.ProviderName = Constants.ProviderName;
            }
        });

        return(builder);
    }
Exemple #11
0
        public static void AddDbProviderFactory(string name, string invariant, string description, string type)
        {
            using (DataSet dataSet = ConfigurationManager.GetSection("system.data") as DataSet)
            {
                if (dataSet == null)
                {
                    // .NET Core
                    DbProviderFactories.RegisterFactory(invariant, type);
                    return;
                }

                var rows = dataSet.Tables[0].Rows;

                foreach (DataRow r in rows)
                {
                    if (r["InvariantName"].ToString() == invariant)
                    {
                        throw new RuntimeException("Invariant name already exists");
                    }
                }

                rows.Add(name, description, invariant, type);
            }
        }
        /// <summary>
        /// Fournit une connexion à la base de données valide
        /// Les informations de connexion sont extraites du fichier de configuration
        /// cette méthode fait appel à une fabrique pattern Factory
        /// </summary>
        /// <returns></returns>
        public DbConnection GetDBConnection()
        {
            if (TypeSGBD == "MySQL")
            {
                DbProviderFactories.RegisterFactory(DBDAO.DbProviderName, MySql.Data.MySqlClient.MySqlClientFactory.Instance);
            }
            if (TypeSGBD == "SqlServer")
            {
                DbProviderFactories.RegisterFactory(DBDAO.DbProviderName, SqlClientFactory.Instance);
            }

            DbProviderFactory fabrique = DbProviderFactories.GetFactory(DBDAO.DbProviderName);

            if (_dbCon == null)
            {
                _dbCon = fabrique.CreateConnection();
            }
            if (_dbCon.State == ConnectionState.Closed)
            {
                _dbCon.ConnectionString = DBDAO.DbConnectionString;
                _dbCon.Open();
            }
            return(_dbCon);
        }
Exemple #13
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
            .AddDataContractResolver();

            DbProviderFactories.RegisterFactory("Npgsql", Npgsql.NpgsqlFactory.Instance);
            services.AddScoped <IDbConnection>((sp) =>
            {
                var conn = DbProviderFactories.GetFactory("Npgsql").CreateConnection();
                conn.ConnectionString = Configuration.GetConnectionString("Sql");
                return(conn);
            });

            configureLogging();

            services.AddAuthentication(Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(c => c.TokenValidationParameters = services.BuildServiceProvider().GetService <TokenValidationParameters>());

            services.AddAuthentication("Cookie").AddCookie("Cookie", opts => {
                opts.Cookie.Name       = "critterlogin";
                opts.Cookie.Expiration = new TimeSpan(14);//todo configurable

                opts.TicketDataFormat = new CookieTicketDataFormat(services.BuildServiceProvider().GetService <IJwtProvider>());
            });

            //domains
            services.AddTransient <UserAuthenticationDomain>();
            services.AddTransient <ErrorMiddleware>();

            //repositories
            services.AddTransient <IUserRepository, UserRepository>();

            //components
            services.AddJwt(Configuration);
        }
Exemple #14
0
        protected void Boostrap(IComponentRegistry registry)
        {
            registry.RegisterInstance <ITransactionScopeFactory>(new DefaultTransactionScopeFactory(false, IsolationLevel.Unspecified, TimeSpan.Zero));

#if (NETCOREAPP2_1 || NETSTANDARD2_0)
            DbProviderFactories.RegisterFactory("System.Data.SqlClient", System.Data.SqlClient.SqlClientFactory.Instance);

            var connectionConfigurationProvider = new Mock <IConnectionConfigurationProvider>();

            connectionConfigurationProvider.Setup(m => m.Get(It.IsAny <string>())).Returns(
                (string name) =>
                name.Equals("EventStoreProjection")
                        ? new ConnectionConfiguration(
                    "EventStoreProjection",
                    "System.Data.SqlClient",
                    "Data Source=.\\sqlexpress;Initial Catalog=ShuttleProjection;Integrated Security=SSPI;")
                        : new ConnectionConfiguration(
                    name,
                    "System.Data.SqlClient",
                    "Data Source=.\\sqlexpress;Initial Catalog=Shuttle;Integrated Security=SSPI;"));

            registry.AttemptRegisterInstance(connectionConfigurationProvider.Object);

            registry.RegisterInstance <IProjectionConfiguration>(new ProjectionConfiguration
            {
                EventProjectionConnectionString =
                    connectionConfigurationProvider.Object.Get("EventStoreProjection").ConnectionString,
                EventProjectionProviderName =
                    connectionConfigurationProvider.Object.Get("EventStoreProjection").ProviderName,
                EventStoreConnectionString = connectionConfigurationProvider.Object.Get("Shuttle").ConnectionString,
                EventStoreProviderName     = connectionConfigurationProvider.Object.Get("Shuttle").ProviderName
            });
#else
            registry.AttemptRegister <IConnectionConfigurationProvider, ConnectionConfigurationProvider>();
#endif
        }
Exemple #15
0
        static void Main(string[] args)
        {
            System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
            DbProviderFactories.RegisterFactory("TDengine", TaosFactory.Instance);
            ///Specify the name of the database
            string database = "db_" + DateTime.Now.ToString("yyyyMMddHHmmss");
            var    builder  = new TaosConnectionStringBuilder()
            {
                DataSource = "taos",
                DataBase   = database,
                Username   = "******",
                Password   = "******",
                Port       = 6030
            };

            //Example for ADO.Net
            using (var connection = new TaosConnection(builder.ConnectionString))
            {
                connection.Open();
                Console.WriteLine("ServerVersion:{0}", connection.ServerVersion);
                Console.WriteLine("create {0} {1}", database, connection.CreateCommand($"create database {database};").ExecuteNonQuery());
                Console.WriteLine("create table t {0} {1}", database, connection.CreateCommand($"create table {database}.t (ts timestamp, cdata int);").ExecuteNonQuery());
                Console.WriteLine("insert into t values  {0}  ", connection.CreateCommand($"insert into {database}.t values ({(long)(DateTime.Now.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds)}, 10);").ExecuteNonQuery());
                var pmcmd = connection.CreateCommand($"insert into {database}.t values (@t, @c);");
                Thread.Sleep(TimeSpan.FromSeconds(1));
                pmcmd.Parameters.AddWithValue("@t", (long)(DateTime.Now.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds));
                pmcmd.Parameters.AddWithValue("@c", 1111);
                pmcmd.ExecuteNonQuery();
                Console.WriteLine("insert into t values  {0}  ", connection.CreateCommand($"insert into {database}.t values ({(long)(DateTime.Now.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds)}, 10);").ExecuteNonQuery());

                //Console.WriteLine("insert into t values  {0} ", connection.CreateCommand($"insert into {database}.t values ({(long)(DateTime.Now.AddMonths(1).Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds)}, 20);").ExecuteNonQuery());
                var cmd_select = connection.CreateCommand();
                cmd_select.CommandText = $"select * from {database}.t;";
                var reader = cmd_select.ExecuteReader();
                int index  = reader.GetOrdinal("cdata");
                Console.WriteLine($"cdata index at {index}");
                Console.WriteLine(cmd_select.CommandText);
                Console.WriteLine("");
                ConsoleTableBuilder.From(reader.ToDataTable()).WithFormat(ConsoleTableBuilderFormat.MarkDown).ExportAndWriteLine();


                Console.WriteLine("");
                connection.CreateCommand($"CREATE TABLE datas ('reportTime' timestamp, type int, 'bufferedEnd' bool, address nchar(64), parameter nchar(64), value nchar(64)) TAGS ('boxCode' nchar(64), 'machineId' int);").ExecuteNonQuery();
                connection.CreateCommand($"INSERT INTO  data_history_67 USING datas TAGS (mongo, 67) values ( 1608173534840 2 false 'Channel1.窑.烟囱温度' '烟囱温度' '122.00' );").ExecuteNonQuery();
                var cmd_datas = connection.CreateCommand();
                cmd_datas.CommandText = $"SELECT  reportTime,type,bufferedEnd,address,parameter,value FROM  {database}.data_history_67 LIMIT  100";
                var readerdatas = cmd_datas.ExecuteReader();
                Console.WriteLine(cmd_datas.CommandText);
                Console.WriteLine("");
                ConsoleTableBuilder.From(readerdatas.ToDataTable()).WithFormat(ConsoleTableBuilderFormat.Default).ExportAndWriteLine();
                Console.WriteLine("");

                Console.WriteLine("CREATE TABLE meters ", connection.CreateCommand($"CREATE TABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupdId int);").ExecuteNonQuery());
                Console.WriteLine("CREATE TABLE d1001 ", connection.CreateCommand($"CREATE TABLE d1001 USING meters TAGS (\"Beijing.Chaoyang\", 2);").ExecuteNonQuery());
                Console.WriteLine("INSERT INTO d1001  ", connection.CreateCommand($"INSERT INTO d1001 USING METERS TAGS(\"Beijng.Chaoyang\", 2) VALUES(now, 10.2, 219, 0.32);").ExecuteNonQuery());
                Console.WriteLine("DROP TABLE  {0} {1}", database, connection.CreateCommand($"DROP TABLE  {database}.t;").ExecuteNonQuery());
                Console.WriteLine("DROP DATABASE {0} {1}", database, connection.CreateCommand($"DROP DATABASE   {database};").ExecuteNonQuery());
                connection.CreateCommand("DROP DATABASE IF EXISTS  IoTSharp").ExecuteNonQuery();
                connection.CreateCommand("CREATE DATABASE IoTSharp KEEP 365 DAYS 10 BLOCKS 4;").ExecuteNonQuery();
                connection.ChangeDatabase("IoTSharp");
                connection.CreateCommand("CREATE STABLE IF NOT EXISTS telemetrydata  (ts timestamp,value_type  tinyint, value_boolean bool, value_string binary(10240), value_long bigint,value_datetime timestamp,value_double double)   TAGS (deviceid binary(32),keyname binary(64));").ExecuteNonQuery();
                //connection.CreateCommand($"CREATE TABLE dev_Thermometer USING telemetrydata TAGS (\"Temperature\")").ExecuteNonQuery();
                var devid = $"{Guid.NewGuid():N}";
                UploadTelemetryData(connection, devid, "Temperature", 999);
                UploadTelemetryData(connection, devid, "Humidity", 888);
                var devid2 = $"{Guid.NewGuid():N}";
                UploadTelemetryData(connection, devid2, "Temperature", 777);
                UploadTelemetryData(connection, devid2, "Humidity", 666);
                var reader2 = connection.CreateCommand("select last_row(*) from telemetrydata group by deviceid,keyname ;").ExecuteReader();
                ConsoleTableBuilder.From(reader2.ToDataTable()).WithFormat(ConsoleTableBuilderFormat.Default).ExportAndWriteLine();

                Console.WriteLine("DROP DATABASE IoTSharp", database, connection.CreateCommand($"DROP DATABASE IoTSharp;").ExecuteNonQuery());

                connection.Close();
            }
            //Example for  Entity Framework Core
            using (var context = new TaosContext(new DbContextOptionsBuilder()
                                                 .UseTaos(builder.ConnectionString).Options))
            {
                Console.WriteLine("EnsureCreated");
                context.Database.EnsureCreated();
                for (int i = 0; i < 10; i++)
                {
                    var rd = new Random();
                    context.sensor.Add(new sensor()
                    {
                        ts = DateTime.Now.AddMilliseconds(i + 10), degree = rd.NextDouble(), pm25 = rd.Next(0, 1000)
                    });
                    Thread.Sleep(10);
                }
                Console.WriteLine("Saveing");
                context.SaveChanges();
                Console.WriteLine("");
                Console.WriteLine("from s in context.sensor where s.pm25 > 0 select s ");
                Console.WriteLine("");
                var f   = from s in context.sensor where s.pm25 > 0 select s;
                var ary = f.ToArray();
                if (ary.Any())
                {
                    ConsoleTableBuilder.From(ary.ToList()).WithFormat(ConsoleTableBuilderFormat.MarkDown).ExportAndWriteLine();
                }
                context.Database.EnsureDeleted();
            }
        }
Exemple #16
0
 public Startup(IConfiguration configuration)
 {
     Configuration = configuration;
     DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", SqlClientFactory.Instance);
 }
Exemple #17
0
        public void Run(string projectJson, string[] args)
        {
            var projectDir = Path.GetDirectoryName(projectJson);

            var outFile       = args.FirstOrDefault(x => x.StartsWith("-o:"))?.Substring(3).TrimToNull();
            var connectionKey = args.FirstOrDefault(x => x.StartsWith("-c:"))?.Substring(3).TrimToNull();
            var table         = args.FirstOrDefault(x => x.StartsWith("-t:"))?.Substring(3).TrimToNull();
            var what          = args.FirstOrDefault(x => x.StartsWith("-w:"))?.Substring(3).TrimToNull();
            var module        = args.FirstOrDefault(x => x.StartsWith("-m:"))?.Substring(3).TrimToNull();
            var identifier    = args.FirstOrDefault(x => x.StartsWith("-i:"))?.Substring(3).TrimToNull();
            var permissionKey = args.FirstOrDefault(x => x.StartsWith("-p:"))?.Substring(3).TrimToNull();

            if (identifier != null)
            {
                CodeFileHelper.Overwrite = true;
            }

            var config         = GeneratorConfig.LoadFromFile(Path.Combine(projectDir, "sergen.json"));
            var connectionKeys = config.Connections
                                 .Where(x => !x.ConnectionString.IsEmptyOrNull())
                                 .Select(x => x.Key).ToList();

            var appSettingsFile = Path.Combine(projectDir, "appsettings.json");
            AppSettingsFormat appSettings;

            if (File.Exists(appSettingsFile))
            {
                appSettings = JSON.ParseTolerant <AppSettingsFormat>(File.ReadAllText(appSettingsFile).TrimToNull() ?? "{}");
            }
            else
            {
                appSettings = new AppSettingsFormat();
            }

            connectionKeys.AddRange(appSettings.Data.Keys);

            var appSettingsFile2 = Path.Combine(projectDir, "appsettings.machine.json");

            if (File.Exists(appSettingsFile2))
            {
                var appSettings2 = JSON.ParseTolerant <AppSettingsFormat>(File.ReadAllText(appSettingsFile2).TrimToNull() ?? "{}");
                foreach (var pair in appSettings2.Data)
                {
                    appSettings.Data[pair.Key] = pair.Value;
                }
            }

            connectionKeys.AddRange(appSettings.Data.Keys);

            connectionKeys = connectionKeys.Distinct(StringComparer.OrdinalIgnoreCase).OrderBy(x => x).ToList();

            if (connectionKeys.Count == 0)
            {
                Console.Error.WriteLine("No connections in appsettings.json or sergen.json!");
                Environment.Exit(1);
            }

            if (outFile == null && connectionKey == null)
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("=== Table Code Generation ===");
                Console.WriteLine("");
                Console.ResetColor();

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Available Connections:");
                Console.ResetColor();
                foreach (var x in connectionKeys)
                {
                    Console.WriteLine(x);
                }
                Console.ResetColor();
                Console.WriteLine();
            }
            else if (connectionKey == null)
            {
                File.WriteAllText(outFile, JSON.Stringify(connectionKeys));
                Environment.Exit(0);
            }

            string userInput = null;

            if (outFile == null && connectionKey == null)
            {
                userInput = connectionKeys.Count == 1 ? connectionKeys[0] : null;
                while (connectionKey == null ||
                       !connectionKeys.Contains(connectionKey, StringComparer.OrdinalIgnoreCase))
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a Connection: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    connectionKey           = Hinter.ReadHintedLine(connectionKeys, userInput: userInput);
                    userInput = connectionKey;

                    if (connectionKey == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            userInput     = connectionKey;
            connectionKey = connectionKeys.Find(x => string.Compare(x, userInput, StringComparison.OrdinalIgnoreCase) == 0);
            if (connectionKey == null)
            {
                Console.Error.WriteLine("Can't find connection with key: " + userInput + "!");
                Environment.Exit(1);
            }

            if (outFile == null)
            {
                Console.ResetColor();
                Console.WriteLine();
            }

            var dataConnection = appSettings.Data.ContainsKey(connectionKey) ?
                                 appSettings.Data[connectionKey] : null;

            var confConnection = config.Connections.FirstOrDefault(x =>
                                                                   string.Compare(x.Key, connectionKey, StringComparison.OrdinalIgnoreCase) == 0);

            var connectionString = dataConnection != null?dataConnection.ConnectionString.TrimToNull() : null;

            if (connectionString == null && confConnection != null)
            {
                connectionString = confConnection.ConnectionString.TrimToNull();
            }

            var providerName = dataConnection != null?dataConnection.ProviderName.TrimToNull() : null;

            if (providerName == null && confConnection != null)
            {
                providerName = confConnection.ProviderName.TrimToNull();
            }
            providerName = providerName ?? "System.Data.SqlClient";

            DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
            DbProviderFactories.RegisterFactory("Microsoft.Data.Sqlite", Microsoft.Data.Sqlite.SqliteFactory.Instance);
            DbProviderFactories.RegisterFactory("Npgsql", Npgsql.NpgsqlFactory.Instance);
            DbProviderFactories.RegisterFactory("FirebirdSql.Data.FirebirdClient", FirebirdSql.Data.FirebirdClient.FirebirdClientFactory.Instance);
            DbProviderFactories.RegisterFactory("MySql.Data.MySqlClient", MySql.Data.MySqlClient.MySqlClientFactory.Instance);

            if (connectionString.IndexOf("../../..") >= 0)
            {
                connectionString = connectionString.Replace("../../..", Path.GetDirectoryName(projectJson));
            }
            else if (connectionString.IndexOf(@"..\..\..\") >= 0)
            {
                connectionString = connectionString.Replace(@"..\..\..\", Path.GetDirectoryName(projectJson));
            }

            ISchemaProvider  schemaProvider;
            List <TableName> tableNames;

            using (var connection = SqlConnections.New(connectionString, providerName))
            {
                schemaProvider = SchemaHelper.GetSchemaProvider(connection.GetDialect().ServerType);
                tableNames     = schemaProvider.GetTableNames(connection).ToList();
            }

            var tables = tableNames.Select(x => x.Tablename).ToList();

            if (outFile == null && table == null)
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Available Tables:");
                Console.ResetColor();

                foreach (var x in tables)
                {
                    Console.WriteLine(x);
                }
            }
            else if (table == null)
            {
                File.WriteAllText(outFile, JSON.Stringify(tableNames.Select(x =>
                {
                    var xct = confConnection == null ? null : confConnection.Tables.FirstOrDefault(z => string.Compare(z.Tablename, table, StringComparison.OrdinalIgnoreCase) == 0);
                    return(new
                    {
                        name = x.Tablename,
                        module = xct == null || xct.Module.IsEmptyOrNull() ? RowGenerator.ClassNameFromTableName(connectionKey) : xct.Module,
                        permission = xct == null || xct.PermissionKey.IsTrimmedEmpty() ? "Administration:General" : xct.PermissionKey,
                        identifier = xct == null || xct.Identifier.IsEmptyOrNull() ? RowGenerator.ClassNameFromTableName(x.Table) : xct.Identifier,
                    });
                })));

                Environment.Exit(0);
            }

            userInput = tables.Count == 1 ? tables[0] : null;
            if (userInput == null && schemaProvider.DefaultSchema != null &&
                tables.Any(x => x.StartsWith(schemaProvider.DefaultSchema + ".")))
            {
                userInput = schemaProvider.DefaultSchema + ".";
            }

            if (outFile == null)
            {
                Console.WriteLine();

                while (table == null ||
                       !tables.Contains(table, StringComparer.OrdinalIgnoreCase))
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a Table: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    table     = Hinter.ReadHintedLine(tables, userInput: userInput);
                    userInput = table;

                    if (table == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            userInput = table;
            var tableName = tableNames.First(x => string.Compare(x.Tablename, userInput, StringComparison.OrdinalIgnoreCase) == 0);

            if (tableName == null)
            {
                Console.Error.WriteLine("Can't find table with name: " + userInput + "!");
                Environment.Exit(1);
            }

            var confTable = confConnection == null ? null : confConnection.Tables.FirstOrDefault(x =>
                                                                                                 string.Compare(x.Tablename, table, StringComparison.OrdinalIgnoreCase) == 0);

            if (module == null)
            {
                userInput = confTable == null || confTable.Module.IsEmptyOrNull() ?
                            RowGenerator.ClassNameFromTableName(connectionKey) : confTable.Module;

                Console.WriteLine();

                while (module.IsTrimmedEmpty())
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a Module name for table: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    module    = Hinter.ReadHintedLine(new string[0], userInput: userInput);
                    userInput = module;

                    if (module == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            if (identifier == null)
            {
                userInput = confTable == null || confTable.Identifier.IsEmptyOrNull() ?
                            RowGenerator.ClassNameFromTableName(tableName.Table) : confTable.Identifier;

                Console.WriteLine();

                while (identifier.IsTrimmedEmpty())
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a class Identifier for table: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    identifier = Hinter.ReadHintedLine(new string[0], userInput: userInput);
                    userInput  = identifier;

                    if (identifier == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            if (permissionKey == null)
            {
                userInput = confTable == null || confTable.PermissionKey.IsTrimmedEmpty() ?
                            "Administration:General" : confTable.PermissionKey;

                Console.WriteLine();

                while (permissionKey.IsTrimmedEmpty())
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a Permission Key for table: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    permissionKey           = Hinter.ReadHintedLine(new string[0], userInput: userInput);
                    userInput = permissionKey;

                    if (permissionKey == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }


            if (what == null)
            {
                Console.WriteLine();

                userInput = "RSU";
                while (what.IsEmptyOrNull())
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Choose What to Generate (R:Row, S:Repo+Svc, U=Cols+Form+Page+Grid+Dlg+Css)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    what      = Hinter.ReadHintedLine(new string[0], userInput: userInput);
                    userInput = what;

                    if (what == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            config.GenerateRow     = what.IndexOf("R", StringComparison.OrdinalIgnoreCase) >= 0;
            config.GenerateService = what.IndexOf("S", StringComparison.OrdinalIgnoreCase) >= 0;
            config.GenerateUI      = what.IndexOf("U", StringComparison.OrdinalIgnoreCase) >= 0;

            Console.ResetColor();
            Console.WriteLine();

            if (confConnection == null)
            {
                confConnection = new GeneratorConfig.Connection
                {
                    Key = connectionKey
                };
                config.Connections.Add(confConnection);
            }

            if (confTable == null)
            {
                confTable = new GeneratorConfig.Table
                {
                    Identifier    = identifier,
                    Module        = module,
                    PermissionKey = permissionKey,
                    Tablename     = tableName.Tablename
                };

                confConnection.Tables.Add(confTable);
            }
            else
            {
                confTable.Identifier    = identifier;
                confTable.Module        = module;
                confTable.PermissionKey = permissionKey;
            }

            File.WriteAllText(Path.Combine(projectDir, "sergen.json"), config.SaveToJson());

            using (var connection = SqlConnections.New(connectionString, providerName))
            {
                connection.Open();

                var rowModel = RowGenerator.GenerateModel(connection, tableName.Schema, tableName.Table,
                                                          module, connectionKey, identifier, permissionKey, config);

                new EntityCodeGenerator(rowModel, config, projectJson).Run();
            }
        }
        /// <summary>
        /// Creates a LocalDb instance to use for the test
        /// </summary>
        private void SetupTestDatabase(
            TestUmbracoDatabaseFactoryProvider testUmbracoDatabaseFactoryProvider,
            IUmbracoDatabaseFactory databaseFactory,
            ILoggerFactory loggerFactory,
            IRuntimeState runtimeState,
            string workingDirectory)
        {
            if (TestOptions.Database == UmbracoTestOptions.Database.None)
            {
                return;
            }

            // need to manually register this factory
            DbProviderFactories.RegisterFactory(Constants.DbProviderNames.SqlServer, SqlClientFactory.Instance);

            string dbFilePath = Path.Combine(workingDirectory, "LocalDb");

            ITestDatabase db = GetOrCreateDatabase(dbFilePath, loggerFactory, testUmbracoDatabaseFactoryProvider);

            switch (TestOptions.Database)
            {
            case UmbracoTestOptions.Database.NewSchemaPerTest:

                // New DB + Schema
                TestDbMeta newSchemaDbMeta = db.AttachSchema();

                // Add teardown callback
                OnTestTearDown(() => db.Detach(newSchemaDbMeta));

                ConfigureTestDatabaseFactory(newSchemaDbMeta, databaseFactory, runtimeState);

                Assert.AreEqual(RuntimeLevel.Run, runtimeState.Level);

                break;

            case UmbracoTestOptions.Database.NewEmptyPerTest:
                TestDbMeta newEmptyDbMeta = db.AttachEmpty();

                // Add teardown callback
                OnTestTearDown(() => db.Detach(newEmptyDbMeta));

                ConfigureTestDatabaseFactory(newEmptyDbMeta, databaseFactory, runtimeState);

                Assert.AreEqual(RuntimeLevel.Install, runtimeState.Level);

                break;

            case UmbracoTestOptions.Database.NewSchemaPerFixture:
                // Only attach schema once per fixture
                // Doing it more than once will block the process since the old db hasn't been detached
                // and it would be the same as NewSchemaPerTest even if it didn't block
                if (_firstTestInFixture)
                {
                    // New DB + Schema
                    TestDbMeta newSchemaFixtureDbMeta = db.AttachSchema();
                    s_fixtureDbMeta = newSchemaFixtureDbMeta;

                    // Add teardown callback
                    OnFixtureTearDown(() => db.Detach(newSchemaFixtureDbMeta));
                }

                ConfigureTestDatabaseFactory(s_fixtureDbMeta, databaseFactory, runtimeState);

                break;

            case UmbracoTestOptions.Database.NewEmptyPerFixture:
                // Only attach schema once per fixture
                // Doing it more than once will block the process since the old db hasn't been detached
                // and it would be the same as NewSchemaPerTest even if it didn't block
                if (_firstTestInFixture)
                {
                    // New DB + Schema
                    TestDbMeta newEmptyFixtureDbMeta = db.AttachEmpty();
                    s_fixtureDbMeta = newEmptyFixtureDbMeta;

                    // Add teardown callback
                    OnFixtureTearDown(() => db.Detach(newEmptyFixtureDbMeta));
                }

                ConfigureTestDatabaseFactory(s_fixtureDbMeta, databaseFactory, runtimeState);

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(TestOptions), TestOptions, null);
            }
        }
 private static void RegisterFactories()
 {
     DbProviderFactories.RegisterFactory("Npgsql", NpgsqlFactory.Instance);
 }
Exemple #20
0
        static void Main(string[] args)
        {
            string connectionString = "Server = localhost; Database = soccer; Trusted_Connection = True";

            EnsureDatabase.For.SqlDatabase(connectionString);

            var upgrader =
                DeployChanges.To
                .SqlDatabase(connectionString)
                .WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly())
                .LogToConsole()
                .Build();

            var result = upgrader.PerformUpgrade();

            Team barcelona = new Team {
                Id = 1, Name = "Барселона"
            };
            Team realMadrid = new Team {
                Id = 2, Name = "Реал Мадрид"
            };
            Team arsenal = new Team {
                Id = 3, Name = "Арсенал"
            };

            NationalTeam spainNationalTeam = new NationalTeam {
                Name = "Сборная Испании"
            };
            NationalTeam englandNationalTeam = new NationalTeam {
                Name = "Сборная Англии"
            };

            Player player1 = new Player {
                Id = 1, Name = "Серхио Регилон", Position = "Защитник", Team = realMadrid, NationalTeam = spainNationalTeam
            };
            Player player2 = new Player {
                Id = 2, Name = "Серхио Бускетс", Position = "Полузащитник", Team = barcelona, NationalTeam = spainNationalTeam
            };
            Player player3 = new Player {
                Id = 3, Name = "Ансу Фати", Position = "Нападающий", Team = barcelona, NationalTeam = spainNationalTeam
            };
            Player player4 = new Player {
                Id = 4, Name = "Энзли Мейтленд-Найлз", Position = "Полузащитник", Team = arsenal, NationalTeam = englandNationalTeam
            };

            DbProviderFactories.RegisterFactory("provider", SqlClientFactory.Instance);

            var factory = DbProviderFactories.GetFactory("provider");

            using (var connection = factory.CreateConnection())
            {
                connection.ConnectionString = connectionString;
                connection.Execute("insert into Teams (Id, Name) values (@Id, @Name)", barcelona);
                connection.Execute("insert into Teams (Id, Name) values (@Id, @Name)", realMadrid);
                connection.Execute("insert into Teams (Id, Name) values (@Id, @Name)", arsenal);

                connection.Execute("insert into NationalTeams (Id, Name) values (@Id, @Name)", spainNationalTeam);
                connection.Execute("insert into NationalTeams (Id, Name) values (@Id, @Name)", englandNationalTeam);

                connection.Execute("insert into Players (Id, Name, Position, Team) values (@Id, @Name, @Position, @Team)", player1);
                connection.Execute("insert into Players (Id, Name, Position, Team) values (@Id, @Name, @Position, @Team)", player2);
                connection.Execute("insert into Players (Id, Name, Position, Team) values (@Id, @Name, @Position, @Team)", player3);
                connection.Execute("insert into Players (Id, Name, Position, Team) values (@Id, @Name, @Position, @Team)", player4);
            }
        }
Exemple #21
0
 public static void DBRegister()
 {
     DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
 }
Exemple #22
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            //ConnectionStrings
            services.Configure <ConnectionStringCollection>(Configuration.GetSection("ConnectionStrings"));
            //AppSettings
            services.Configure <AppSettingsString>(Configuration.GetSection("AppSettings"));

            //添加Swagger
            //services.AddSwaggerGen(p =>
            //{
            //    p.SwaggerDoc("v1", new Info { Title = "SwaggerExemple", Version = "v1" });
            //    p.IncludeXmlComments(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Edu.Swagger.xml"));
            //});

            //注册仓储
            services.AddDataService();

            //配置数据库实体映射程序集
            //DapperExtensions 相关设置:1.实体映射器,2.实体映射查找程序集列表,2.sql方言,用于不同数据库sql脚本的生成
            DapperExtensions.DapperExtensions.Configure(typeof(DapperExtensions.Mapper.DefaultClassMapper <>), null, new DapperExtensions.Sql.MySqlDialect());

            //注册数据库访问服务
            services.AddScoped <IUnitOfWorkDefaultContext, UnitOfWorkDefaultContext>(s =>
            {
                //数据库连接配置
                var connectionString = new ConnectionStringSettings();
                var connOptions      = s.GetService <IOptions <ConnectionStringCollection> >().Value;
                //if (connOptions == null || connOptions.Count < 3)
                //    throw new System.Exception("请先配置数据库连接或数据库连接数不对");

                connectionString.ConnectionString = connOptions[0].DefaultConn;
                connectionString.ProviderName     = connOptions[0].ProviderName;
                return(new UnitOfWorkDefaultContext(connectionString));
            });

            #region 注册数据提供程序工厂类
            DbProviderFactoryCollection dbProviderFactories = Configuration.GetSection("DbProviderFactories").Get <DbProviderFactoryCollection>();
            //注册数据提供程序工厂类
            if (dbProviderFactories != null && dbProviderFactories.Count > 0)
            {
                foreach (var item in dbProviderFactories)
                {
                    DbProviderFactories.RegisterFactory(item.ProviderInvariantName, item.TypeName);
                }
            }
            #endregion

            //添加对AutoMapper的支持
            Mapper.Initialize(map =>
            {
                map.AddProfile <UserProfile>();
            });

            services.AddMvc(options =>
            {
                options.Filters.Add <ExceptionHandleAttribute>();
                options.Filters.Add <ActionPackageFilter>();
            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
            //修改.net core默认的json默认命名规则
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.ContractResolver = new DefaultContractResolver();
                options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
            });;
        }
Exemple #23
0
 protected AcceptanceTestCase(string name)
 {
     Name = name;
     DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
 }
Exemple #24
0
 public static void Main(string[] args)
 {
     DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
     CreateHostBuilder(args).Build().Run();
 }
Exemple #25
0
 static DBUtils()
 {
     DbProviderFactories.RegisterFactory("System.Data.SqlClient", System.Data.SqlClient.SqlClientFactory.Instance);
 }
Exemple #26
0
        public void Run(string csproj, string[] args)
        {
            var projectDir = Path.GetDirectoryName(csproj);

            var outFile       = GetOption(args, "o").TrimToNull();
            var connectionKey = GetOption(args, "c").TrimToNull();
            var table         = GetOption(args, "t").TrimToNull();
            var what          = GetOption(args, "w").TrimToNull();
            var module        = GetOption(args, "m").TrimToNull();
            var identifier    = GetOption(args, "i").TrimToNull();
            var permissionKey = GetOption(args, "p").TrimToNull();

            if (identifier != null)
            {
                CodeFileHelper.Overwrite = true;
            }

            var config = GeneratorConfig.LoadFromFile(Path.Combine(projectDir, "sergen.json"));

            var connectionStringOptions = new ConnectionStringOptions();

            if (!string.IsNullOrEmpty(config.CustomTemplates))
            {
                Templates.TemplatePath = Path.Combine(projectDir, config.CustomTemplates);
            }

            foreach (var x in config.Connections.Where(x => !x.ConnectionString.IsEmptyOrNull()))
            {
                connectionStringOptions[x.Key] = new ConnectionStringEntry
                {
                    ConnectionString = x.ConnectionString,
                    ProviderName     = x.ProviderName,
                    Dialect          = x.Dialect
                };
            }

            foreach (var name in config.GetAppSettingsFiles())
            {
                var path = Path.Combine(projectDir, name);
                if (File.Exists(name))
                {
                    var appSettings = JSON.ParseTolerant <AppSettingsFormat>(File.ReadAllText(path).TrimToNull() ?? "{}");
                    if (appSettings.Data != null)
                    {
                        foreach (var data in appSettings.Data)
                        {
                            // not so nice fix for relative paths, e.g. sqlite etc.
                            if (data.Value.ConnectionString.Contains("../../..", StringComparison.Ordinal))
                            {
                                data.Value.ConnectionString = data.Value
                                                              .ConnectionString.Replace("../../..", Path.GetDirectoryName(csproj), StringComparison.Ordinal);
                            }
                            else if (data.Value.ConnectionString.Contains(@"..\..\..\", StringComparison.Ordinal))
                            {
                                data.Value.ConnectionString = data.Value.ConnectionString.Replace(@"..\..\..\",
                                                                                                  Path.GetDirectoryName(csproj), StringComparison.Ordinal);
                            }

                            connectionStringOptions[data.Key] = data.Value;
                        }
                    }
                }
            }

            if (connectionStringOptions.Count == 0)
            {
                Console.Error.WriteLine("No connections in appsettings files or sergen.json!");
                Environment.Exit(1);
            }

            var connectionKeys = connectionStringOptions.Keys.OrderBy(x => x).ToArray();

            if (outFile == null && connectionKey == null)
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("=== Table Code Generation ===");
                Console.WriteLine("");
                Console.ResetColor();

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Available Connections:");
                Console.ResetColor();
                foreach (var x in connectionKeys)
                {
                    Console.WriteLine(x);
                }
                Console.ResetColor();
                Console.WriteLine();
            }
            else if (connectionKey == null)
            {
                File.WriteAllText(outFile, JSON.Stringify(connectionStringOptions.Keys.OrderBy(x => x)));
                Environment.Exit(0);
            }

            string userInput = null;

            if (outFile == null && connectionKey == null)
            {
                userInput = connectionKeys.Length == 1 ? connectionKeys[0] : null;
                while (connectionKey == null ||
                       !connectionKeys.Contains(connectionKey, StringComparer.OrdinalIgnoreCase))
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a Connection: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    connectionKey           = Hinter.ReadHintedLine(connectionKeys, userInput: userInput);
                    userInput = connectionKey;

                    if (connectionKey == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            userInput = connectionKey;
            if (!connectionStringOptions.ContainsKey(userInput))
            {
                Console.Error.WriteLine("Can't find connection with key: " + userInput + "!");
                Environment.Exit(1);
            }

            if (outFile == null)
            {
                Console.ResetColor();
                Console.WriteLine();
            }

            DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient",
                                                Microsoft.Data.SqlClient.SqlClientFactory.Instance);
            DbProviderFactories.RegisterFactory("System.Data.SqlClient",
                                                Microsoft.Data.SqlClient.SqlClientFactory.Instance);
            DbProviderFactories.RegisterFactory("Microsoft.Data.Sqlite",
                                                Microsoft.Data.Sqlite.SqliteFactory.Instance);
            DbProviderFactories.RegisterFactory("Npgsql",
                                                Npgsql.NpgsqlFactory.Instance);
            DbProviderFactories.RegisterFactory("FirebirdSql.Data.FirebirdClient",
                                                FirebirdSql.Data.FirebirdClient.FirebirdClientFactory.Instance);
            DbProviderFactories.RegisterFactory("MySql.Data.MySqlClient",
                                                MySqlConnector.MySqlConnectorFactory.Instance);

            var sqlConnections = new DefaultSqlConnections(
                new DefaultConnectionStrings(connectionStringOptions));

            ISchemaProvider  schemaProvider;
            List <TableName> tableNames;

            using (var connection = sqlConnections.NewByKey(connectionKey))
            {
                schemaProvider = SchemaHelper.GetSchemaProvider(connection.GetDialect().ServerType);
                tableNames     = schemaProvider.GetTableNames(connection).ToList();
            }

            var tables         = tableNames.Select(x => x.Tablename).ToList();
            var confConnection = config.Connections.FirstOrDefault(x =>
                                                                   string.Compare(x.Key, connectionKey, StringComparison.OrdinalIgnoreCase) == 0);

            if (outFile == null && table == null)
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Available Tables:");
                Console.ResetColor();

                foreach (var x in tables)
                {
                    Console.WriteLine(x);
                }
            }
            else if (table == null)
            {
                File.WriteAllText(outFile, JSON.Stringify(tableNames.Select(x =>
                {
                    var xct = confConnection == null ? null : confConnection.Tables.FirstOrDefault(z => string.Compare(z.Tablename, table, StringComparison.OrdinalIgnoreCase) == 0);
                    return(new
                    {
                        name = x.Tablename,
                        module = xct == null || xct.Module.IsEmptyOrNull() ? RowGenerator.ClassNameFromTableName(connectionKey) : xct.Module,
                        permission = xct == null || xct.PermissionKey.IsTrimmedEmpty() ? "Administration:General" : xct.PermissionKey,
                        identifier = xct == null || xct.Identifier.IsEmptyOrNull() ? RowGenerator.ClassNameFromTableName(x.Table) : xct.Identifier,
                    });
                })));

                Environment.Exit(0);
            }

            userInput = tables.Count == 1 ? tables[0] : null;
            if (userInput == null && schemaProvider.DefaultSchema != null &&
                tables.Any(x => x.StartsWith(schemaProvider.DefaultSchema + ".", StringComparison.Ordinal)))
            {
                userInput = schemaProvider.DefaultSchema + ".";
            }

            if (outFile == null)
            {
                Console.WriteLine();

                while (table == null ||
                       !tables.Contains(table, StringComparer.OrdinalIgnoreCase))
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a Table: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    table     = Hinter.ReadHintedLine(tables, userInput: userInput);
                    userInput = table;

                    if (table == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            userInput = table;
            var tableName = tableNames.First(x => string.Compare(x.Tablename, userInput, StringComparison.OrdinalIgnoreCase) == 0);

            if (tableName == null)
            {
                Console.Error.WriteLine("Can't find table with name: " + userInput + "!");
                Environment.Exit(1);
            }

            var confTable = confConnection == null ? null : confConnection.Tables.FirstOrDefault(x =>
                                                                                                 string.Compare(x.Tablename, table, StringComparison.OrdinalIgnoreCase) == 0);

            if (module == null)
            {
                userInput = confTable == null || confTable.Module.IsEmptyOrNull() ?
                            RowGenerator.ClassNameFromTableName(connectionKey) : confTable.Module;

                Console.WriteLine();

                while (module.IsTrimmedEmpty())
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a Module name for table: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    module    = Hinter.ReadHintedLine(Array.Empty <string>(), userInput: userInput);
                    userInput = module;

                    if (module == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            if (identifier == null)
            {
                userInput = confTable == null || confTable.Identifier.IsEmptyOrNull() ?
                            RowGenerator.ClassNameFromTableName(tableName.Table) : confTable.Identifier;

                Console.WriteLine();

                while (identifier.IsTrimmedEmpty())
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a class Identifier for table: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    identifier = Hinter.ReadHintedLine(Array.Empty <string>(), userInput: userInput);
                    userInput  = identifier;

                    if (identifier == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            if (permissionKey == null)
            {
                userInput = confTable == null || confTable.PermissionKey.IsTrimmedEmpty() ?
                            "Administration:General" : confTable.PermissionKey;

                Console.WriteLine();

                while (permissionKey.IsTrimmedEmpty())
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Enter a Permission Key for table: ('!' to abort)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    permissionKey           = Hinter.ReadHintedLine(Array.Empty <string>(), userInput: userInput);
                    userInput = permissionKey;

                    if (permissionKey == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }


            if (what == null)
            {
                Console.WriteLine();

                userInput = "RSUC";
                while (what.IsEmptyOrNull())
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Choose What to Generate (R:Row, S:Repo+Svc, U=UI, C=Custom)");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    what      = Hinter.ReadHintedLine(Array.Empty <string>(), userInput: userInput);
                    userInput = what;

                    if (what == "!")
                    {
                        Console.ResetColor();
                        return;
                    }
                }
            }

            config.GenerateRow     = what.IndexOf("R", StringComparison.OrdinalIgnoreCase) >= 0;
            config.GenerateService = what.IndexOf("S", StringComparison.OrdinalIgnoreCase) >= 0;
            config.GenerateUI      = what.IndexOf("U", StringComparison.OrdinalIgnoreCase) >= 0;
            config.GenerateCustom  = what.IndexOf("C", StringComparison.OrdinalIgnoreCase) >= 0;

            Console.ResetColor();
            Console.WriteLine();

            if (confConnection == null)
            {
                confConnection = new GeneratorConfig.Connection
                {
                    Key = connectionKey
                };
                config.Connections.Add(confConnection);
            }

            if (confTable == null)
            {
                confTable = new GeneratorConfig.Table
                {
                    Identifier    = identifier,
                    Module        = module,
                    PermissionKey = permissionKey,
                    Tablename     = tableName.Tablename
                };

                confConnection.Tables.Add(confTable);
            }
            else
            {
                confTable.Identifier    = identifier;
                confTable.Module        = module;
                confTable.PermissionKey = permissionKey;
            }

            File.WriteAllText(Path.Combine(projectDir, "sergen.json"), config.SaveToJson());

            using (var connection = sqlConnections.NewByKey(connectionKey))
            {
                connection.Open();

                var csprojContent = File.ReadAllText(csproj);
                var net5Plus      = !new Regex(@"\<TargetFramework\>.*netcoreapp.*\<\/TargetFramework\>", RegexOptions.Multiline | RegexOptions.Compiled)
                                    .IsMatch(csprojContent);

                var rowModel = RowGenerator.GenerateModel(connection, tableName.Schema, tableName.Table,
                                                          module, connectionKey, identifier, permissionKey, config, net5Plus);

                rowModel.AspNetCore = true;
                rowModel.NET5Plus   = net5Plus;

                var kdiff3Paths = new[]
                {
                    config.KDiff3Path
                };

                CodeFileHelper.Kdiff3Path = kdiff3Paths.FirstOrDefault(File.Exists);
                CodeFileHelper.TSCPath    = config.TSCPath ?? "tsc";

                new EntityCodeGenerator(rowModel, config, csproj).Run();
            }
        }
Exemple #27
0
 public static void Configure(IConfiguration configuration)
 {
     DbProviderFactories.RegisterFactory("System.Data.SQLite", new System.Data.SQLite.SQLiteFactory());
     ConnectionStringProvider = new ConnectionStringProvider(configuration);
 }
Exemple #28
0
        protected override void RegisterDbProviderFactory()
        {
#if (NETCOREAPP3_1 || NET5_0)
            DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", SqlClientFactory.Instance);
#endif
        }
Exemple #29
0
        public static void Main()
        {
            DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", SqlClientFactory.Instance);

            ServiceHost.Run <Host>();
        }
 private static void AddDbProviders()
 {
     DbProviderFactories.RegisterFactory("Npgsql", Npgsql.NpgsqlFactory.Instance);
     DbProviderFactories.RegisterFactory("Sqlite", Data.Sqlite.SqliteFactory.Instance);
     DbProviderFactories.RegisterFactory("SqlClient", Data.SqlClient.SqlClientFactory.Instance);
 }