powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Редактирование модели
14 сообщений из 14, страница 1 из 1
Редактирование модели
    #39681958
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток уважаемые знатоки. Продолжаю изучать mvc, когда есть время. Делая свое тестовое приложение по учету техники, стараюсь следовать паттерну. Немного разобрался в создании собственных моделей и как правильно с ними работать. Но немного не понял следующего:
БД я залил в программу в виде edmx модели. Туда перекочевали внешние ключи из справочников. Для добавления я создал свою модель. С ним проблем не возникло. Но вот с редактированием я подзастрял.
Есть таблица учета с внешним ключем OS_id (int), связанная со справочником sl_OS с полями (id, name).
Есть своя модель в которой есть следующие поля:
Код: c#
1.
2.
Nullable<int> OS {get;set;}
IENumerable<sl_OS> SlOS {get;set;}



Далее для редактирования я в контроллере получаю данные из таблицы и создаю экземпляр своей модели
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
var MainData = db.dt_EquipmentRegistration.Where(e=>e.reg_id == id).Select(e=>e).Single();

ModelEditEr MEditEr = new ModelEditEr {
...
// Присвоение параметров
OS = MainData.sl_OS.id,
SlOS = db.sl_OS
...
}


При присвоении OS - среда сваливается в исключение, что ссылка на объект не указывает на экземпляр объекта. В MainData.sl_OS.id - null. Но мне как бы это и надо. Я и хочу присвоить данное значение. Может здесь я как-то неправильно присваиваю код внешнего ключа?
...
Рейтинг: 0 / 0
Редактирование модели
    #39681971
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13В MainData.sl_OS.id - null. Но мне как бы это и надо.Сомневаюсь. Скорее всего MainData.sl_OS == null.

Версия EF какая?



dartveider13
Код: c#
1.
.Select(e=>e)

Это зачем?
...
Рейтинг: 0 / 0
Редактирование модели
    #39681974
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, 6 версия. Версия студии 2015. Про (e=>e) в книжке увидел. Не понял пока зачем это.
...
Рейтинг: 0 / 0
Редактирование модели
    #39681977
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как тогда правильно обратиться к внешнему ключу? edmx не создала полей. Физически в БД это поле os_id (int FK) с таблицей-справочником sl_OS
...
Рейтинг: 0 / 0
Редактирование модели
    #39681979
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13и создаю экземпляр своей моделиа где почитать про свои модели? Кроме модели из бд?
...
Рейтинг: 0 / 0
Редактирование модели
    #39681980
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13edmx не создала полейпочему?
...
Рейтинг: 0 / 0
Редактирование модели
    #39681981
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13Версия студии 2015.update3?
...
Рейтинг: 0 / 0
Редактирование модели
    #39681982
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProСкорее всего MainData.sl_OS == null.

Вот здесь вы совершенно правы! Отладчик это и показывает. Тогда все же как правильно обратиться? к нему
...
Рейтинг: 0 / 0
Редактирование модели
    #39681984
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты очень путано все изложил, проще было бы скрин схемы данных. С этими аббревиатурами я совсем запутался, что из них поля, что таблицы, продраться сложно.

Но ты не ответил
Shocker.ProСомневаюсь. Скорее всего MainData.sl_OS == null.Это так?
...
Рейтинг: 0 / 0
Редактирование модели
    #39681986
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, одновременно написали...

dartveider13Shocker.ProСкорее всего MainData.sl_OS == null.

Вот здесь вы совершенно правы! Отладчик это и показывает. Тогда все же как правильно обратиться? к немуНу и в чем проблема? Проверяй на null
dartveider13
Код: c#
1.
OS = MainData.sl_OS?.id,

или ты считаешь, что null там неправомерно?
...
Рейтинг: 0 / 0
Редактирование модели
    #39681991
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, извините, просто комп с исходником не подключен к инету а инет на удаленной тачке. Так что приходится вот так сжато на пальцах объяснять. А за подсказку спасибо! Я как раз предполагал что надо ? где-то поставить, но никак нагуглить не мог куда. Сейчас пробую.
...
Рейтинг: 0 / 0
Редактирование модели
    #39681993
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, как раз null там вполне правомерно. Это необязательное поле
...
Рейтинг: 0 / 0
Редактирование модели
    #39681998
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, Ес ес!!! Совершенно отлично! Спасибо большое Вам. ? прокатил)))
...
Рейтинг: 0 / 0
Редактирование модели
    #39682038
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Ну тут я руками развожу

Весь длинный рассказ про MVC, EF, edmx и модели свелся к тому, то всё это тут не причем и что при ошибке NullReferenceException в C# надо проверять на null.


Используй известную бритву и будет тебе щасття!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Редактирование модели
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]