2011-01-28 2 views
7

Мое приложение предназначено исключительно для чтения, поэтому я не хочу генерировать все обновления для удаления кода, и я не хочу извлекать все поля из всех таблиц. Некоторые из этих полей не имеют значения NULL, поэтому я получаю ошибки от EF здесь, потому что нет значения по умолчанию для сохранения.Как создать объект только для чтения в Entity Framework?

В моем предыдущем ORM (Wilson) вы можете просто отметить объект как доступный только для чтения в XML. Я видел несколько сообщений, в которых представлены сложные решения. Я что-то упускаю? Почему это не так прямо?

Я вижу, что мастер службы RIA имеет флажок для этого для каждого объекта ...

Спасибо за какие-либо объяснения.

+0

Вы должны быть более точными относительно ошибок, которые вы видите и в каких обстоятельствах вы их видите. Нет возможности «только для чтения», но ваше приложение все равно должно работать. –

+1

После удаления некоторых столбцов (которые не являются нулевыми в базе данных) из объекта в конструкторе я получаю сообщение об ошибке: «Столбец xyz в таблице ABC должен быть сопоставлен: он не имеет значения по умолчанию и не имеет значения« nullable ». Это имеет смысл, но я хочу полностью игнорировать этот столбец и вообще не иметь код для сборки EF. – Graeme

ответ

1

Проблема заключается в том, что в вашем SSDL есть не-нулевое поле, которое отсутствует в вашем CSDL.

Вы можете вручную удалить столбец из SSDL, и EF будет счастлив. Но дизайнер обновит колонку при обновлении модели. Таким образом, вы можете либо удалить его снова, либо обновить свою модель из варианта базы данных, которая не имеет этого столбца.

+0

Вот что я подозревал. Но почему? В чем заключалась трудность предоставления атрибута только для чтения или удаления столбца из SSDL, если я удалю его из EDMX? – Graeme

+1

У вас не может быть атрибут «только для чтения», который не является nullable для типа «чтение-запись», а EF не имеет функции «только для чтения», AFAIK. Удаление столбца из SSDL не является «трудным», но дизайнер предпочитает не делать этого, потому что в мире дизайнера GUI SSDL всегда * генерируется (и, часто, повторно создается), а не поддерживается вручную. –

+0

ОК, я могу принять удаление столбца из SSDL (и продолжать его удаление), но как насчет всего генерируемого crud-кода - это просто раздражает, зная, что он там, даже когда это не требуется. Интересно, что проблема с EF, не имеющим атрибут типа только для чтения ... – Graeme

Смежные вопросы