簡體   English   中英

在ASP.NET MVC中使用實體框架時出現問題

[英]Problem when using Entity Framework in ASP.NET MVC

我使用實體框架在ASP.NET MVC中實現我的數據訪問層。 我在View中遇到問題。

當我的代碼在VIEW中顯示為:

我在運行時出現錯誤:

你調用的對象是空的。

說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。

異常詳細信息:System.NullReferenceException:對象引用未設置為對象的實例。

源錯誤:

第14行:

第15行:<%= Model.FirstName%>第16行:

第17行:

這是從強類型視圖模板生成的。 我確保將模型引用添加到web.config中,而在使用LINQ to SQL時沒有遇到此錯誤

有什么幫助嗎?

由於我無法對答案發表評論,因此我將通過一個新答案進行回答。.我注意到您的屬性稱為“名字”,您是否有機會嘗試做教程? 這是您遇到問題的“編輯”操作嗎?

因為這是我和我的2個同學所遇到的完全相同的問題。 這是對該問題的更詳細說明:

這是控制器操作:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Contact contactToEdit) {
    if (!ModelState.IsValid)
        return View();

    try {
        var originalContact = (from c in base._entities.ContactSet
                               where c.Id == contactToEdit.Id
                               select c).First();
        base._entities.ApplyPropertyChanges(originalContact.EntityKey.EntitySetName, contactToEdit);
        base._entities.SaveChanges();

        return RedirectToAction("Index");
    } catch(Exception e) {
        return View();
    }
}

調用ApplyPropertyChanges時會引發異常 (InvalidOperationException)異常消息:

{System.InvalidOperationException:ObjectStateManager不包含ObjectStateEntry,該對象對類型為'ContactManager.Models.Contact'的對象的引用。
在System.Data.Objects.ObjectContext.ApplyPropertyChanges(字符串EntitySetName,對象已更改)
在C:\\ Users \\ Jeroen \\ Desktop \\ ContactManager \\ ContactManager \\ ContactManager \\ ContactManager \\ Controllers \\ HomeController.cs:line 65}中的ContactManager.Controllers.HomeController.Edit(Contact contactToEdit)處

當我在ApplyPropertyChanges之前添加此行時:

System.Data.Objects.ObjectStateEntry x = base._entities.ObjectStateManager.GetObjectStateEntry(originalContact);

x確實包含正確類型的條目。 調試圖像

注意:我與本教程略有不同,將實體對象放入超類中,因此不必在所有控制器中都聲明相同的對象。 但是,按照本教程進行操作時,也會出現相同的問題。

我想到了! 問題出在VIEW中,通常是使用(Html.BeginForm(new {Id = Model.Id}))

如果數據庫中的主鍵是CategoryID,則您認為應該將代碼修改為

ID = Model.CategoryID

但實際上,您應該這樣做

使用(Html.BeginForm(new {CategoryID = Model.CategoryID}))

否則,它將不會填充模型。

喘口氣,希望對您有所幫助!

有時Model為null,因為帶有.FirstOrDefault()方法的select語句未帶來有效的對象。

您始終可以將.FirstOrDefault()更改為.First()並重新編譯您的解決方案。

看起來您的模型似乎未在控制器中正確填充。 您的問題中沒有足夠的信息來確定到底出了什么問題。

暫無
暫無

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

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