Как я могу скрыть столбец базы данных в модели объекта? - PullRequest
7 голосов
/ 16 мая 2010

Я использую Entity Framework 4 и у меня есть вопрос:

В моей базе данных есть столбец паролей, которым я хочу управлять с помощью пользовательского SQL. Поэтому я не хочу, чтобы модель что-либо знала об этом.

Я попытался удалить свойство в окне Сведения о сопоставлении, но затем я получил ошибку компиляции:

Ошибка 3023: проблема в отображении фрагментов, начинающихся со строки 1660: столбец User.Password в таблице. Пользователь должен быть отображен: он не имеет значения по умолчанию и не может иметь значения NULL.

Итак, я сделал столбец обнуляемым в базе данных и обновил модель. Теперь я получаю эту ошибку:

Ошибка 3004. Ошибка при отображении фрагментов, начиная со строки 1660: отображение не указано для свойств User.Password, User.Salt в Set Users. Сущность с ключом (PK) не будет в обоих направлениях, когда: Тип объекта [UserDirectoryModel.User]

Есть идеи, пожалуйста?

Спасибо, Ник

Ответы [ 2 ]

11 голосов
/ 17 мая 2010

Вы можете просто пометить свойство как частное с помощью панели «Свойства» в конструкторе EDMX: в параметре генерации кода есть параметры Getter и Setter, которые можно изменить с Public на Private.

5 голосов
/ 17 мая 2010

Один из способов исправить это - создать представление вашей пользовательской таблицы, которое не содержит столбец пароля. Затем используйте представление вашей модели, а не таблицу.

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