[英]The model backing the 'EmployeeDetailsContext' context has changed since the database was created.
[英]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.