[英]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"
任何想法為什么會發生這種情況以及它的方式是什么。
謝謝
如果有些人還在尋找答案。
當您重載部分類中的構造函數,而不調用其中的默認構造函數時,會發生此問題。
實體的默認構造函數執行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.