簡體   English   中英

在LINQ to SQL中執行InsertOnSubmit時出現NullReferenceException

[英]NullReferenceException when doing InsertOnSubmit in LINQ to SQL

在我的數據庫中,我有一個名為StaffMembers的表

當我通過linq-to-sql將它帶入我的.net項目時,會創建一個實體類StaffMember

現在我還在我的項目中創建了一個部分類StaffMember,以添加我在其他頂層使用的額外屬性。 例如。 IsDeleted屬性。 此partial類還繼承了一個抽象類和接口,以確保還實現了一些其他屬性。

現在當我創建一個新的“StaffMember”實例時

例如。 StaffMember newStaff = new StaffMember(); 並賦予其所有屬性等

然后通過我的Manager調用上下文中的InsertOnSubmit。

Add(StaffMember newStaff)
{
     context.StaffMembers.InsertOnSubmit(newStaff);
     context.Save();
}

我得到一個“對象引用沒有設置為對象的實例”錯誤。

on context.StaffMembers.InsertOnSubmit(newStaff);

堆棧說

"   at System.Data.Linq.Mapping.EntitySetDefSourceAccessor`2.GetValue(T instance)\r\n   at 
System.Data.Linq.Mapping.MetaAccessor`2.GetBoxedValue(Object instance)\r\n   at 
System.Data.Linq.ChangeTracker.StandardChangeTracker.StandardTrackedObject.HasDeferredLoader(MetaDataMember deferredMember)\r\n   at 
System.Data.Linq.ChangeTracker.StandardChangeTracker.StandardTrackedObject.get_HasDeferredLoaders()\r\n   at 
System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(MetaType mt, Object obj, Dictionary`2 visited, Boolean recurse, Int32 level)\r\n   at 
System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(Object obj, Boolean recurse)\r\n   at 
System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(Object obj)\r\n   at System.Data.Linq.Table`1.InsertOnSubmit(TEntity entity)\r\n   at 
BusinessObjects.StaffMemberManager.Add(StaffMember staffMember) in     
C:\\StaffMemberManager.cs:line 251"

任何想法為什么會發生這種情況以及它的方式是什么。

謝謝

好吧,我在http://social.msdn.microsoft.com/Forums/en/linqprojectgeneral/thread/0cf1fccb-6398-4f16-920b-adef9dc4ac9f上找到了答案

如果有些人還在尋找答案。

當您重載部分類中的構造函數,而不調用其中的默認構造函數時,會發生此問題。

實體的默認構造函數執行Context對象所需的一些操作。

因此,如果在部分類中有一個重載構造函數並使用它來創建對象,請確保在第一行中調用默認構造函數

在C#中你可以做到這一點

例如。

 Customer(string custID)

你需要添加一個

 Customer(string custID):this()

在C#中,Customer是我的類和Customer(字符串custID):this()是我的部分類中的重載構造函數。

有時,只是忘了將這一行添加到基類:

[InheritanceMapping(Code =“Class”,Type = typeof(Class))]

暫無
暫無

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

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