EF Code First - сущность, объединяющая несколько таблиц - PullRequest
2 голосов
/ 08 июля 2011

В настоящее время у меня есть класс EF, который поддерживается представлением базы данных (объединяющим несколько таблиц).Чтобы сделать его обновляемым, мне нужно изменить класс, который будет поддерживаться таблицей базы данных.Я использую Entity Framework 4.1 Code First и не могу понять, как установить эти отношения?

Для упрощения у меня в настоящее время есть класс Categories, который возвращает Имя категории (таблица категорий) и Имя типа категории (Таблица категорий типов).Они оба в представлении базы данных, которое я сейчас использую.Я хочу перейти на ViewModel, которая возвращает оба этих поля непосредственно из своих таблиц и правильно объединяет их, поэтому, когда пользователь обновляет имя категории, EF должен иметь возможность правильно обрабатывать обновление (поскольку вместо этого будет обновляться таблица).зрения).Любые советы, как это сделать?

1 Ответ

2 голосов
/ 08 июля 2011

Таблица - это таблица, это отдельный объект базы данных. Если вы хотите удалить свое представление и заменить его таблицей, вам нужно удалить свои текущие таблицы (Categories и CategoryTypes) и создать одну таблицу, которая будет содержать денормализованные данные. Это довольно плохое решение, и оно вызовет проблемы во всем приложении.

Просто для упрощения описания: Невозможно заменить ваш вид, созданный объединениями, между несколькими таблицами с таблицей, и невозможно сделать ваш вид обновляемым.

Вы делаете это неправильно, потому что вы явно отображаете модели представления непосредственно в вашу базу данных. Сопоставьте Catagories и CategoryTypes с объектами, загрузите Category с его CategoryType и сведите их с вашей моделью представления в логике приложения (или загрузите модель представления с помощью проекции). Как только пользователь обновит вашу модель представления, разложите ее на отдельные сущности и сохраните их.

...