いくつかのテーブルが存在することを確認したいのですが、すべてのテーブル名を取得するにはどうすればよいですか?
CreateCommand()を使用してカスタムクエリを実行しますか?
はい、 SHOW TABLES;
ようなカスタムクエリは機能します。 問題はこの目的を意図したものではないため、さらにヘルプが必要な場合は、 StackOverflowでこの質問をしてください。
@Flithor質問を投稿したら、 pomelo-entityframeworkcore-mysql
タグを使用してください。通知されます(MySQLおよびEF Core関連の質問なので、十分に近いです)。
ええと、多分私はできません、私はスタックオーバーフローに質問制限があります。 -個人的な質問が多すぎます...
(他の人を助けるためにタイトルを編集します)
ええと、多分私はできません、私はスタックオーバーフローに質問制限があります。 -個人的な質問が多すぎます...
@Flithorその場合、約束されたサンプルコードは次のとおりです。
`` `c#
システムを使用する;
System.Collections.Genericを使用する;
System.Diagnosticsを使用します。
Microsoft.EntityFrameworkCoreを使用します。
Microsoft.Extensions.Loggingを使用する;
Pomelo.EntityFrameworkCore.MySql.Infrastructureを使用します。
名前空間IssueConsoleTemplate
{{
パブリッククラスのアイスクリーム
{{
public int IceCreamId {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その場合、約束されたサンプルコードは次のとおりです。
`` `c#
システムを使用する;
System.Collections.Genericを使用する;
System.Diagnosticsを使用します。
Microsoft.EntityFrameworkCoreを使用します。
Microsoft.Extensions.Loggingを使用する;
Pomelo.EntityFrameworkCore.MySql.Infrastructureを使用します。
名前空間IssueConsoleTemplate
{{
パブリッククラスのアイスクリーム
{{
public int IceCreamId {get; セットする; }
パブリック文字列名前{取得; セットする; }
}
INFORMATION_SCHEMA
。TABLES
ここで、
TABLE_SCHEMA
= database(); ";}
`` `