أريد التحقق من وجود جدول ، فكيف أحصل على جميع أسماء الجداول؟
استخدم CreateCommand () للقيام باستعلام مخصص؟
نعم استعلام مخصص مثل SHOW TABLES;
سيعمل. يرجى طرح هذا السؤال على Stack Overflow للحصول على مزيد من المساعدة لأن المشكلات ليست مخصصة لهذا الغرض.
Flithor سأجيب عليك ببعض التعليمات البرمجية على Stack Overflow ، بمجرد نشر سؤالك هناك. الرجاء استخدام علامة pomelo-entityframeworkcore-mysql
، لذلك سيتم إخطاري (إنه سؤال متعلق بـ MySQL و EF Core ، قريب جدًا بدرجة كافية)
عذرًا ، ربما لا أستطيع ، لدي حد للأسئلة في Stack Overflow. - الكثير من الأسئلة الشخصية ...
(سأقوم بتحرير العنوان لمساعدة الآخرين)
عذرًا ، ربما لا أستطيع ، لدي حد للأسئلة في Stack Overflow. - الكثير من الأسئلة الشخصية ...
Flithor في هذه الحالة ، إليك نموذج الشفرة الموعود به:
ج #
باستخدام النظام ؛
باستخدام System.Collections.Generic ؛
باستخدام System.Diagnostics ؛
باستخدام Microsoft.EntityFrameworkCore ؛
باستخدام Microsoft.Extensions.Logging ؛
باستخدام Pomelo.EntityFrameworkCore.MySql.Infrastructure ؛
مشكلة مساحة الاسم ConsoleTemplate
{
IceCream من الدرجة العامة
{
عامة int IceCreamId {get؛ جلس؛ }
اسم السلسلة العامة {get؛ جلس؛ }
}
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`
من INFORMATION_SCHEMA
. TABLES
حيث TABLE_SCHEMA
= database ()؛ "؛
var tableNames = new List<string>();
using var reader = command.ExecuteReader();
while (reader.Read())
{
tableNames.Add((string) reader["TABLE_NAME"]);
}
return tableNames;
}
}
}
""
التعليق الأكثر فائدة
Flithor في هذه الحالة ، إليك نموذج الشفرة الموعود به:
ج #
باستخدام النظام ؛
باستخدام System.Collections.Generic ؛
باستخدام System.Diagnostics ؛
باستخدام Microsoft.EntityFrameworkCore ؛
باستخدام Microsoft.Extensions.Logging ؛
باستخدام Pomelo.EntityFrameworkCore.MySql.Infrastructure ؛
مشكلة مساحة الاسم ConsoleTemplate
{
IceCream من الدرجة العامة
{
عامة int IceCreamId {get؛ جلس؛ }
اسم السلسلة العامة {get؛ جلس؛ }
}
من
INFORMATION_SCHEMA
.TABLES
حيث
TABLE_SCHEMA
= database ()؛ "؛}
""