簡體   English   中英

如何修復“自創建數據庫以來支持上下文的模型已更改。” 首先在數據庫中

[英]How to Fix 'The model backing the context has changed since the database was created.' in database first

我正在嘗試將實體連接到現有數據庫,但很難弄清楚為什么會出現以下錯誤:

自數據庫創建以來,支持“RPSContext”上下文的模型已更改。 考慮使用 Code First 遷移來更新數據庫 ( http://go.microsoft.com/fwlink/?LinkId=238269 )。

正如我所提到的,我正在連接到一個現有的數據庫。 所以我不需要實體來修改結構。 我只想能夠選擇/插入/更新/等。

設計:

數據庫設計

模型:

public class ProductAttributePriceAdjustment
{
        [Key]
        public int AdjustmentId { get; set; }
        public int StoreProductId { get; set; }
        public int StoreId { get; set; }
        public string ProductId { get; set; }
        public int ProductSizeId { get; set; }
        public decimal Adjustment { get; set; }
        public int PointsAdjustment { get; set; }
        public int ProductColorID { get; set; }
}

語境

public class RPSContext : DbContext
{
        public RPSContext() : base("ApplicationConnection")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<ProductAttributePriceAdjustment>().ToTable("ProductAttributePriceAdjustment");
        }

        public DbSet<ProductAttributePriceAdjustment> PriceAdjustments { get; set; }
}

幾乎每次我看到這個錯誤都是因為數據庫架構和代碼期望的架構沒有同步。 在某些時候架構發生了變化,您沒有在代碼中反映您的更改。

例如,您有一個 db 列Adjustment ,這是一種允許空值的貨幣類型。 但是,在您的 c# 類中,它的類型為decimal ,它不接受空值。 還有一些其他屬性要么不存在,要么類型不匹配。

好消息是,如果您使用數據庫優先,修復它應該非常容易。 就像轉到 .edmx 文件一樣簡單,右鍵單擊空白區域,然后選擇“從數據庫更新模型”。

在此處輸入圖片說明

從那里您可以添加、更新或刪除在您的數據庫中找到的項目。 一旦你保存了模型文件 VS 將重新創建你的模型類,它應該被同步。

請注意:如果您重命名 db 列,VS 不會從您的模型中刪除舊列名,並且會引發錯誤,直到您從代碼模型中手動刪除該列。

轉到包管理器控制台然后去檢查遷移文件夾中的遷移歷史記錄並檢查第一次啟用遷移名稱

然后

add-migration [首次啟用遷移名稱] -force

然后更新遷移

問題解決了

暫無
暫無

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

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