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(); }
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); }
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(); }
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(); }
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("-----------------------------------------------------------------------"); }
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 }
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); } }
// 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)); }); }
/// <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 }
/// <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); }
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); }
// 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); }
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 }
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(); } }
public Startup(IConfiguration configuration) { Configuration = configuration; DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", SqlClientFactory.Instance); }
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); }
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); } }
public static void DBRegister() { DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance); }
// 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"; });; }
protected AcceptanceTestCase(string name) { Name = name; DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance); }
public static void Main(string[] args) { DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance); CreateHostBuilder(args).Build().Run(); }
static DBUtils() { DbProviderFactories.RegisterFactory("System.Data.SqlClient", System.Data.SqlClient.SqlClientFactory.Instance); }
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(); } }
public static void Configure(IConfiguration configuration) { DbProviderFactories.RegisterFactory("System.Data.SQLite", new System.Data.SQLite.SQLiteFactory()); ConnectionStringProvider = new ConnectionStringProvider(configuration); }
protected override void RegisterDbProviderFactory() { #if (NETCOREAPP3_1 || NET5_0) DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", SqlClientFactory.Instance); #endif }
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); }