Я пытаюсь определить, как лучше всего архитектор проекта .NET Entity Framework достичь хорошего многоуровневого подхода. Пока я пробовал это в игре, основанной на просмотре, где игроки владеют и управляют планетами. Вот как у меня это получилось:
Веб-сайт
Здесь содержится весь внешний интерфейс.
Проект С# - MLS.Game.Datastrong >
Это содержит файл EDMX со всеми моими сопоставлениями данных. Здесь не намного больше.
Проект С# - MLS.Game.Business
Здесь содержатся различные классы, которые я называю "Менеджеры", такие как PlanetManager.cs. Менеджер планет имеет различные статические методы, которые используются для взаимодействия с планетой, такие как getPlanet (int planetID), которые возвращают сгенерированный объект кода из MLS.Game.Data.
На веб-сайте я сделаю что-то вроде этого:
var planet = PlanetManager.getPlanet(1);
Он возвращает объект Planet из MLS.Game.Data(сгенерированный из EDMX). Он работает, но это меня беспокоит, потому что это означает, что мой передний конец должен ссылаться на MLS.Game.Data. Я всегда чувствовал, что GUI должен только ссылаться на бизнес-проект.
Кроме того, я обнаружил, что мои классы менеджера, как правило, очень тяжелые. Я получаю в них десятки статических методов.
Итак... мой вопрос: как все остальные выкладывают проекты ASP EF?
ИЗМЕНИТЬ
После еще нескольких, есть дополнительные предметы, которые меня беспокоят. Например, допустим, у меня есть объект Planet, который снова генерирует код из мастера. Что, если пришло время, чтобы моя Планета нуждалась в специализированном свойстве, скажем, "Население", которое является вычислением какого-то типа, основанного на других свойствах объекта Planet. Хочу ли я создать новый класс, который наследует от Планеты, а затем вернет это? (хм, интересно, закрыты ли эти классы EF?)
Спасибо