NullReferenceException при выполнении InsertOnSubmit в LINQ к SQL

В моей базе данных у меня есть таблица под названием StaffMembers

когда я приношу это в свой .net Project как через linq-to-sql класс объекта, StaffMember создается

Теперь я также создал частичный класс StaffMember в моем проекте также, для добавления дополнительных свойств, которые я использую в других верхних слоях. например, свойство IsDeleted. Этот частичный класс также наследовал абстрактный класс и интерфейс, чтобы удостовериться, что некоторые другие свойства также реализованы.

Теперь, когда я создаю новый экземпляр "Штатного сотрудника"

например, StaffMember newStaff = новый StaffMember (); и дайте всему этому его свойства и т.д.

и затем назовите InsertOnSubmit на контексте через моего менеджера.

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

Я получаю "Ссылку на объект не набор к экземпляру объектной" ошибки.

на контексте. 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"

Какая-либо идея, почему это произошло бы и каков путь вокруг этого.

Спасибо

25
задан soldieraman 4 February 2010 в 07:47
поделиться

2 ответа

Хорошо, я нашел свой ответ на 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 () - мой конструктор перегрузки в моем частичном классе.

43
ответ дан 28 November 2019 в 21:05
поделиться

Как-то забыл добавить эту строку в базовый класс:

[InheritanceMapping(Code = "Class", Type = typeof(Class))]

1
ответ дан 28 November 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: