2009-07-10 4 views
0

У меня есть 2 приложения: UIМоделирование лица для конкретных приложений - Entity Framework

  1. менеджера - который должен быть в состоянии создать пользователь со всей его полями (имя пользователя, адрес электронной почты, возраст и т.д.) и отображать их.
  2. Основной компонент, которому требуется только поле UserId и Username, и должно быть очень эффективным. Он также не должен иметь возможность писать в базу данных.

Кажется, мне нужны две разные модели: одна для приложения пользовательского интерфейса и вторая для основного компонента. Когда я создаю 1-ю модель, жизнь хороша. Но когда я пытаюсь создать вторую модель, я получаю все ненужные поля. Если я попытаюсь удалить их - мне удастся это сделать только для полей с нулевым значением, но не для требуемых (что требуется только для сохранения, фактически). Вот что я получаю: «Столбец Users.email в таблице Пользователи должны быть сопоставлены: он не имеет значения по умолчанию и не имеет значения« nullable ».

Установка поля «email» в качестве частного получателя & setter не решит мою проблему, так как я не хочу хранить значение вообще на сущности (и извлекать поле из базы данных) - как я уже сказал, это приложение должно быть максимально эффективным.

Я считаю, что если бы я мог каким-то образом установить модель, как только для чтения, он будет решить эту проблему, но это только догадка (и я не мог найти способ сделать это - это therer?)

Любая помощь будет оценена по достоинству. Спасибо, Nir.

ответ

0

Существует не такая штука, как модель сущности «только для чтения». Однако вы можете выполнить запрос только для чтения, установив значение MergeOption, чтобы изменения в объектах не отслеживались. Вы также можете выбрать только те столбцы, которые вам нужны в вашем приложении, проецируя их в анонимный тип, вместо того, чтобы возвращать тип объекта в ваших запросах. Таким образом, вы бы использовали одну и ту же модель в обоих приложениях, но в «основном компоненте» вы использовали бы модель по-разному, чтобы обеспечить лучшую производительность для использования только для чтения.

0

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

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

+0

Это точно моя точка зрения, но у EF есть ограничение, чтобы включить все непустые поля в модель независимо от того, что! – nirpi