簡體   English   中英

EntityFrameworkCore DatabaseFirst 的一般使用方法,不在 C#.NET 中搭建腳手架

[英]General usage approach for EntityFrameworkCore DatabaseFirst by not scaffolding in C#.NET

我想使用 EntityFrameworkCore 6 (EF6.Core) 向遠程用戶交付一個 C#.NET Core 6 應用程序,而該應用程序的主要目的是在將應用程序驗證到用戶的 MySQL 服務器后瀏覽整個 MySQL 服務器用於包括記錄的數據庫和表。 應用程序應解析並列出所有可用的數據庫,然后用戶應 select 任何列出的數據庫,然后應用程序應列出數據庫內的所有表,包括表架構,一旦選擇表,表記錄應被解析並可用用於進一步處理。

據我所知,有一些解決方案推薦了 CLI 方法,例如“dotnet 腳手架”或“dotnet 遷移”,我發現它們不適用於我的案例,因為以下條件不滿足。

我的要求是(1)用戶只獲得應用程序可執行文件,不會與開發人員共享數據庫結構和表/模式以進行集成。

(2) 用戶不應該也不會在自己的機器上執行“dotnet scaffolding”相關命令,將數據庫的schema交給開發者。

(3) 解決方案應該是通用的,而不是具體的,因為應用程序可執行文件不應該改變並針對用例進行調整

首先,我想知道 EntityFrameworkCore 6 是否足夠先進以滿足要求。

其次,非常感謝任何可以顯示任務應該如何完成的最小可運行工作 C# 代碼。

請考慮我是 EF 的初學者,我想閱讀和理解一個簡單的最小可運行代碼,它可以闡明如何解決問題。

順便說一句,如果 EF6 無法滿足要求,是否還有其他可用的建議解決方案?

Entity Framework Core 的目的是為已知數據庫構建代碼 model。 因此,它非常不適合您的應用程序。

相反,只需將常規 ADO.NET 方法與諸如MySqlConnector之類的庫一起使用。 您可以使用DbConnection.GetSchema方法獲取所有模式和表的列表(您的 MySQL 用戶帳戶有權查看)。

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...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM