Ich möchte überprüfen, ob eine Tabelle existiert. Wie bekomme ich alle Tabellennamen?
Verwenden Sie CreateCommand(), um eine benutzerdefinierte Abfrage durchzuführen?
Ja, eine benutzerdefinierte Abfrage wie SHOW TABLES;
würde funktionieren. Bitte stellen Sie diese Frage auf Stack Overflow, um weitere Hilfe zu erhalten, da Probleme nicht für diesen Zweck bestimmt sind.
@Flithor Ich antworte Ihnen mit Beispielcode auf Stack Overflow, sobald Sie Ihre Frage dort gepostet haben. Bitte verwenden Sie das Tag pomelo-entityframeworkcore-mysql
, damit ich benachrichtigt werde (es ist eine Frage zu MySQL und EF Core, also nahe genug).
Oh oh, vielleicht kann ich nicht, ich habe ein Fragelimit für Stack Overflow. - Zu viel persönliche Frage...
(Ich werde den Titel bearbeiten, um anderen zu helfen)
Oh oh, vielleicht kann ich nicht, ich habe ein Fragelimit für Stack Overflow. - Zu viel persönliche Frage...
@Flithor In diesem Fall ist hier der versprochene Beispielcode:
```c#
Verwenden des Systems;
mit System.Collections.Generic;
Verwenden von System.Diagnostics;
unter Verwendung von Microsoft.EntityFrameworkCore;
Verwenden von Microsoft.Extensions.Logging;
Verwenden von Pomelo.EntityFrameworkCore.MySql.Infrastructure;
Namespace IssueConsoleTemplate
{
öffentliche Klasse IceCream
{
public int IceCreamId { get; einstellen; }
öffentliche Zeichenfolge Name { get; einstellen; }
}
public class Context : DbContext
{
public DbSet<IceCream> IceCreams { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseMySql(
"server=127.0.0.1;port=3306;user=root;password=;database=Issue1279",
b => b.ServerVersion("8.0.21-mysql")
.CharSetBehavior(CharSetBehavior.NeverAppend))
.UseLoggerFactory(
LoggerFactory.Create(
b => b.AddConsole()
.AddFilter(level => level >= LogLevel.Information)))
.EnableSensitiveDataLogging()
.EnableDetailedErrors();
}
}
internal static class Program
{
private static void Main()
{
using var context = new Context();
context.Database.EnsureDeleted();
context.Database.EnsureCreated();
var tableNames = GetTableNames(context);
Trace.Assert(tableNames.Contains("IceCreams"));
}
private static List<string> GetTableNames(DbContext context)
{
// EF Core will close the connection automatically for us, when we ensure, that it is EF Core itself that is
// responsible for opening the database connection. We can ensure that by calling `OpenConnection()` first.
context.Database.OpenConnection();
var connection = context.Database.GetDbConnection();
using var command = connection.CreateCommand();
command.CommandText = @"select `TABLE_NAME`
ab INFORMATION_SCHEMA
. TABLES
wobei TABLE_SCHEMA
= Datenbank();";
var tableNames = new List<string>();
using var reader = command.ExecuteReader();
while (reader.Read())
{
tableNames.Add((string) reader["TABLE_NAME"]);
}
return tableNames;
}
}
}
```
Hilfreichster Kommentar
@Flithor In diesem Fall ist hier der versprochene Beispielcode:
```c#
Verwenden des Systems;
mit System.Collections.Generic;
Verwenden von System.Diagnostics;
unter Verwendung von Microsoft.EntityFrameworkCore;
Verwenden von Microsoft.Extensions.Logging;
Verwenden von Pomelo.EntityFrameworkCore.MySql.Infrastructure;
Namespace IssueConsoleTemplate
{
öffentliche Klasse IceCream
{
public int IceCreamId { get; einstellen; }
öffentliche Zeichenfolge Name { get; einstellen; }
}
ab
INFORMATION_SCHEMA
.TABLES
wobei
TABLE_SCHEMA
= Datenbank();";}
```