![](/img/trans.png)
[英]ASP.NET 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更改可能產生有害影響:
以防萬一這對某人有幫助-我看到了此錯誤消息。 原來,我更改了與EF模型關聯的數據庫,並且未正確設置連接字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.