Saya ingin memeriksa beberapa tabel ada, jadi bagaimana cara mendapatkan semua nama tabel?
gunakan CreateCommand() untuk melakukan kueri khusus?
Ya, kueri khusus seperti SHOW TABLES;
akan berfungsi. Silakan ajukan pertanyaan ini di Stack Overflow untuk bantuan lebih lanjut karena masalah tidak dimaksudkan untuk tujuan ini.
@Flithor Saya akan menjawab Anda dengan beberapa contoh kode di Stack Overflow, setelah Anda memposting pertanyaan Anda di sana. Silakan gunakan tag pomelo-entityframeworkcore-mysql
, jadi saya akan diberi tahu (ini adalah pertanyaan terkait MySQL dan EF Core, cukup dekat).
Uh oh, mungkin saya tidak bisa, saya punya batas pertanyaan di Stack Overflow. - Terlalu banyak pertanyaan pribadi...
(Saya akan mengedit judul untuk membantu orang lain)
Uh oh, mungkin saya tidak bisa, saya punya batas pertanyaan di Stack Overflow. - Terlalu banyak pertanyaan pribadi...
@Flithor Dalam hal ini, berikut adalah contoh kode yang dijanjikan:
```c#
menggunakan Sistem;
menggunakan System.Collections.Generic;
menggunakan System.Diagnostics;
menggunakan Microsoft.EntityFrameworkCore;
menggunakan Microsoft.Extensions.Logging;
menggunakan Pomelo.EntityFrameworkCore.MySql.Infrastructure;
namespace IssueConsoleTemplate
{
es krim kelas publik
{
public int IceCreamId { dapatkan; set; }
Nama string publik { dapatkan; set; }
}
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`
dari INFORMATION_SCHEMA
. TABLES
dimana TABLE_SCHEMA
= database();";
var tableNames = new List<string>();
using var reader = command.ExecuteReader();
while (reader.Read())
{
tableNames.Add((string) reader["TABLE_NAME"]);
}
return tableNames;
}
}
}
```
Komentar yang paling membantu
@Flithor Dalam hal ini, berikut adalah contoh kode yang dijanjikan:
```c#
menggunakan Sistem;
menggunakan System.Collections.Generic;
menggunakan System.Diagnostics;
menggunakan Microsoft.EntityFrameworkCore;
menggunakan Microsoft.Extensions.Logging;
menggunakan Pomelo.EntityFrameworkCore.MySql.Infrastructure;
namespace IssueConsoleTemplate
{
es krim kelas publik
{
public int IceCreamId { dapatkan; set; }
Nama string publik { dapatkan; set; }
}
dari
INFORMATION_SCHEMA
.TABLES
dimana
TABLE_SCHEMA
= database();";}
```