LINQ DataContext.SubmitChanges () в C # Reporting «Ссылка на объект не установлена ​​на экземпляр объекта». - PullRequest
3 голосов
/ 07 октября 2009

Я думаю, что у многих людей была эта проблема, но я не могу ее исправить или понять, почему она у меня есть. Я рву волосы вот уже пару часов.

Я получаю сообщение об ошибке: «Ссылка на объект не установлена ​​для экземпляра объекта». в моем datacontext.SubmitChanges () во ВТОРОЕ время этот метод запускается (я перебираю набор строк ObjectName):

    private Object CreateObject(string ObjectName, SystemClassEnum SystemClass)
    {
        Object result = new Object();
        result.Name = ObjectName;
        result.SystemClassID = (int)SystemClass;
        _dataContext.Objects.InsertOnSubmit(result);
        _dataContext.SubmitChanges();
        return result;
    }

Я думал, что это потому, что значение result.Name может быть нулевым, но я так больше не думаю.

Кажется, что dataContext закрывается? но в режиме отладки я проверяю состояние соединения и оно «открыто» после возникновения ошибки.

Я использую шаблон репозитория и ASP.NET MVC.

Объект результата (new Object ()) является экземпляром автоматически сгенерированного класса LINQ DBML, который также имеет частичный класс, который я создал с помощью одного метода расширения. Я не понимаю, как расширение класса может быть причиной проблемы.

У меня нет идей.

Есть мысли? Спасибо за любую помощь, вы можете предоставить !!

С уважением,

Эрик

1 Ответ

2 голосов
/ 07 октября 2009

Не называйте ни одного из ваших типов Object - это серьезно плохая идея; вы пожалеете об этом ... выберите другое имя ... (или System и т. д.).

Вы уверены, что ошибка на самом деле не в строке выше (_dataContext.Objects. и т. Д.)? К сожалению, вы не показываете никакого кода, относящегося к _dataContext (например, он мог бы стать null), и вы не указываете, добавили ли (например) какие-либо методы partial в контекст данных или сущность, или иметь какие-либо события. Я ожидаю, что проблема будет в одной из этих областей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...