Enfoque de uso general para la base de datos EntityFrameworkCore Primero al no utilizar andamios en C#.NET

Me gustaría entregar una aplicación C#.NET Core 6 usando EntityFrameworkCore 6 (EF6.Core) a un usuario remoto, mientras que la intención principal de la aplicación es navegar por todo el servidor MySQL después de autenticar la aplicación en el servidor MySQL del usuario. para bases de datos y tablas, incluidos los registros. La aplicación debe analizar y enumerar todas las bases de datos disponibles, luego el usuario debe seleccionar cualquiera de las bases de datos enumeradas y luego la aplicación debe enumerar todas las tablas dentro de la base de datos, incluido el esquema de tablas, una vez que se selecciona una tabla, los registros de la tabla deben analizarse y estar disponibles para su posterior procesamiento.

Como sé, hay algunas soluciones que recomiendan métodos CLI como 'andamio de dotnet' o 'migraciones de dotnet' que no encuentro aplicables a mi caso ya que no se cumplen las siguientes condiciones.

Mis requisitos son (1) El usuario solo obtiene el ejecutable de la aplicación y no compartirá la estructura de la base de datos ni las tablas/esquemas con el desarrollador para la integración.

(2) El usuario no debe ejecutar ni ejecutará los comandos relacionados con 'dotnet scaffolding' en su máquina para entregar al desarrollador el esquema de la base de datos.

(3) La solución debe ser general y no específica, ya que el ejecutable de la aplicación no debe cambiar ni modificarse para los casos de uso.

En primer lugar, me gustaría saber si EntityFrameworkCore 6 es lo suficientemente avanzado para cumplir con los requisitos o no.

En segundo lugar, se agradece mucho cualquier código C# de trabajo ejecutable mínimo que pueda mostrar cómo se debe realizar la tarea.

Tenga en cuenta que soy principiante con EF y me gustaría leer y comprender un código ejecutable mínimo simple que puede arrojar algo de luz sobre cómo resolver el problema.

Por cierto, si EF6 no puede cumplir con los requisitos, ¿hay alguna otra solución sugerida disponible?

Answer

El propósito de Entity Framework Core es construir un modelo de código para una base de datos conocida . Por lo tanto, es un ajuste muy pobre para su aplicación.

En su lugar, simplemente use métodos regulares de ADO.NET con una biblioteca como MySqlConnector . Puede usar el DbConnection.GetSchemamétodo para obtener una lista de todos los esquemas y tablas (que su cuenta de usuario de MySQL tiene permiso para ver).

using var connection = new MySqlConnection("Server=...;User=...");
connection.Open();

var databases = connection.GetSchema("DATABASES");
var tables = connection.GetSchema("TABLES");

// process the two DataTables retrieved above...