簡體   English   中英

.NET 6.0 中 EF Designer 的替代品是什么

[英]What is the replacement for EF Designer in .NET 6.0

我在 .NET 框架 WPF 應用程序中成功使用了 EF。

現在我正在遷移到 .NET 6.0 wpf 應用程序,這里不可能使用 EF 設計器。

我所說的 EF Designer 的意思是:

模型,我可以一鍵從數據庫中更新

自動生成的上下文 class 如下所示:

public partial class NEVA_TELECOM_DBEntities : DbContext
{
    public NEVA_TELECOM_DBEntities()
        : base("name=NEVA_TELECOM_DBEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<Position> Positions { get; set; }
    public virtual DbSet<Employee> Employees { get; set; }
    public virtual DbSet<Event> Events { get; set; }
    public virtual DbSet<sysdiagram> sysdiagrams { get; set; }
    public virtual DbSet<AvailableModule> AvailableModules { get; set; }
    public virtual DbSet<Абоненты> Абоненты { get; set; }
    public virtual DbSet<Заявки> Заявки { get; set; }

    public virtual ObjectResult<string> sp_GetEmployeePosition(string number)
    {
        var numberParameter = number != null ?
            new ObjectParameter("Number", number) :
            new ObjectParameter("Number", typeof(string));

        return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("sp_GetEmployeePosition", numberParameter);
    }

我不需要自己編寫連接字符串的地方。

在哪里我也可以使用 Linq :

(from p in db.AvailableModules 
 where p.Access_Code == AcessCODE 
 select p.Available_Module).ToList();

那么是否有一個框架可以在 .NET 6.0 中完成所有這些工作? 或者有沒有辦法在 .NET 6.0 中使用 EF 設計器?

不。EF Core 不使用設計器使用的 EDMX,並且沒有新的設計器。 您可以在 .NET 核心中使用舊的 EF6,但 .NET 核心項目中不支持設計器。 您可以在單獨的項目中使用設計器,並將生成的 DbContext 包含在您的 .NET 核心項目中。 請參閱https://docs.microsoft.com/en-us/ef/ef6/what-is-new/#ef-designer-support

但是 IMO 不值得使用舊的 EF 來保留設計師。

EDMX 不符合協作友好設計的趨勢,因為開發和源代碼控制越來越多地轉向在線工具,並且越來越多的軟件被開發為開源軟件。 它在 EF 核心中被遺棄了(或者更好的是:沒有重建)並且它不會很快回到那里 - 如果有的話。

即使只有兩個人接觸了源代碼,這個單一的 EDMX 文件也是一場災難。 我親身經歷過。 類似的巨石存在並被遺棄。 已經出現了其他設計/架構,允許以最小的合並沖突風險進行修改,例如垂直切片(順便說一句,不僅僅是因為這個原因)。

你可能不同意,但根據我的經驗,最好順應這種趨勢(如果你不能打敗它們,就加入它們)。 不要試圖找到類似的單一替代方案。 首先開始工作代碼。 也許有遷移,但不一定(遷移也不是協作友好的)。 數據庫腳本和 EF class 文件的同步維護一點也不難,而且當數據庫變得更復雜時,IMO 是go的唯一方法。 新類可以由有用的工具(如EF Core Power Tools )生成,然后手動重新生成或維護。

我們喜歡使用數據庫項目作為單一的事實來源,它還可以在源代碼控制中實現詳細的更改跟蹤(可以說比遷移要好得多)。

暫無
暫無

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

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