簡體   English   中英

使用EF的MVC應用程序中發生System.Data.Entity.Core.EntityCommandExecutionException

[英]System.Data.Entity.Core.EntityCommandExecutionException Occurred in MVC app Using EF

我將創建一個以UUID作為其唯一鍵(不是主鍵)的申請表。

我得到了錯誤:

EntityFramework.SqlServer.dll中發生類型為'System.Data.Entity.Core.EntityCommandExecutionException'的異常,但未在用戶代碼中處理。其他信息:執行命令定義時發生錯誤。 有關詳細信息,請參見內部異常。

與數據庫的連接字符串:

 connectionString="Data Source=(localdb)\v11.0; 
                   Initial Catalog=FormsContext; 
                   Integrated Security=True; 
                   MultipleActiveResultSets=True;
                   AttachDbFilename=|DataDirectory|Forms.mdf"
 providerName="System.Data.SqlClient"

FormsContext.cs:

namespace ApplicationForm.Models
{
    public class FormsContext : DbContext
    {
        public FormsContext() : base("name=FormsContext")
        {
        }

        public System.Data.Entity.DbSet<ApplicationForm.Models.Form> Forms { get; set; }
...

數據庫是這樣的:

 FormsContext->Forms->{id,uuid,first,last...}

我不確定這次發生了什么。 有人可以幫我解決這個問題嗎?

編輯/解決方案

我不確定如何檢查內部異常,因此對此進行了一些研究。 因此,當我閱讀內部異常中的錯誤消息時,可以解決我的問題。

我發現了錯誤。 查詢字段為“名字”,但我的表列名稱為“名字”。 他們不匹配。 更改數據庫列名稱后,它又可以工作了。

找出錯誤所在。 查詢字段為“名字”,但我的表列名稱為“名字”。 他們不匹配。 更改數據庫列名稱后,它又可以工作了。

如果數據庫始終處於不斷變化中,則必須努力使每個數據庫保持同步。

為什么?

EF只是一組映射,時間快照,而無論這些映射是表還是存儲過程,都沒有關系。

對於列名或外鍵約束的任何細微更改都會對任何映射產生連鎖反應 ,因此需要將其重新映射/構建為新結構; 否則,就會因舊映射而產生怪異的行為。

有時,這些影響可能會產生您所發現的明顯錯誤,甚至會產生更隱蔽的非明顯邏輯錯誤,這些錯誤可以為正在運行(已編譯)的軟件提供細微的邏輯錯誤。 我已經根據經驗看到了邏輯錯誤,並且確實會發生。

因此,請務必保持EF映射同步。


我以類似的方式回答了另一個EF問題。

我曾遇到其中EF在運行時映射存儲過程失敗,因為在存儲過程中看到了一個內部的變化 ,一個SQL的情況下cast已經從結果剝離出列名,和EF失敗(在改變之前映射)。 我的答案中有一個屏幕截圖,顯示了EF / db更改可能產生有害影響:

數據讀取器不兼容。 成員在數據讀取器中沒有具有相同名稱的對應列

就我而言,接下來的幫助:

1)按View Detail..按鈕:

在此處輸入圖片說明

2)檢查您的實際錯誤:

在此處輸入圖片說明

希望它對某人有幫助。

以防萬一這對某人有幫助-我看到了此錯誤消息。 原來,我更改了與EF模型關聯的數據庫,並且未正確設置連接字符串。

暫無
暫無

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

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