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