Csharp/C#教程:在LINQ to SQL中执行InsertOnSubmit时出现NullReferenceException分享


在LINQ to SQL中执行InsertOnSubmit时出现NullReferenceException

在我的数据库中,我有一个名为StaffMembers的表

当我通过linq-to-sql将它带入我的.net项目时,会创建一个实体类StaffMember

现在我还在我的项目中创建了一个部分类StaffMember,以添加我在其他顶层使用的额外属性。 例如。 IsDeleted属性。 此partial类还inheritance了一个抽象类和接口,以确保还实现了一些其他属性。

现在当我创建一个新的“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)rn at System.Data.Linq.Mapping.MetaAccessor`2.GetBoxedValue(Object instance)rn at System.Data.Linq.ChangeTracker.StandardChangeTracker.StandardTrackedObject.HasDeferredLoader(MetaDataMember deferredMember)rn at System.Data.Linq.ChangeTracker.StandardChangeTracker.StandardTrackedObject.get_HasDeferredLoaders()rn at System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(MetaType mt, Object obj, Dictionary`2 visited, Boolean recurse, Int32 level)rn at System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(Object obj, Boolean recurse)rn at System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(Object obj)rn at System.Data.Linq.Table`1.InsertOnSubmit(TEntity entity)rn at BusinessObjects.StaffMemberManager.Add(StaffMember staffMember) in C:\StaffMemberManager.cs:line 251" 

知道为什么会发生这种情况以及它的方法是什么。

谢谢

好吧,我在https://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))]

上述就是C#学习教程:在LINQ to SQL中执行InsertOnSubmit时出现NullReferenceException分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1005138.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐