簡體   English   中英

WPF C# 應用程序在安裝更新時更新實體框架

[英]WPF C# Application updating the Entity Framework when installing an update

因此,在花了幾天時間用各種搜索詞在互聯網上搜索之后,我對我應該做什么,或者當通過安裝應用程序執行更新時我應該如何進行數據庫更新一無所知。

到目前為止,我已經完成了所有遷移工作,並開始考慮讓安裝腳本也執行此遷移。 我的問題是,要做到這一點需要什么。

該應用程序沒有什么特別之處,並且使用 NuGet 包管理器中的標准 EntityFramework,當前應用程序中沒有錯誤並且運行良好,只是我需要開始研究如何在下一站執行此操作。 什么是最佳實踐、陷阱等?

我來自 Web 背景,花了 15 年時間在實時生產服務器上進行這些遷移,所以我對這個過程並不陌生。 但是這個過程對我來說完全陌生,我不知道從哪里開始閱讀和實驗。

任何幫助將不勝感激。

假設 Code-First,並且每個安裝只有一個數據庫,那么在啟動時應用遷移可能是最簡單的事情。

EF 核心https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/applying?tabs=dotnet-core-cli#apply-migrations-at-runtime

在 EF6 中使用 MigrateDatabaseToLatestVersion 初始值設定項https://docs.microsoft.com/en-us/dotnet/api/system.data.entity.migratedatabasetolatestversion-2?view=entity-framework-6.2.0

添加以下內容,因為它解決了我的問題,因為其余代碼很好。 我無法找到明確答案的一件事是,如何在安裝應用程序時更新數據庫,並且有一個現有數據庫。

事實證明,最簡單的方法是在安裝腳本中調用以下內容,或者在應用程序首次啟動時調用。

var migrator = new DbMigrator(new Configuration());
migrator.Update();

Configuration 類是 Entity Framework 生成的類,以防有人好奇。

internal sealed class Configuration : DbMigrationsConfiguration<DBContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }

    protected override void Seed(DBContext context)
    {
    //  This method will be called after migrating to the latest version.
    //  You can use the DbSet<T>.AddOrUpdate() helper extension method
    //  to avoid creating duplicate seed data.
    }
}

暫無
暫無

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

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