Когда мы, разработчики, пишем код доступа к данным, о чем нас должно беспокоить, должно ли приложение хорошо масштабироваться и обрабатывать нагрузку / хиты.
Учитывая эту простую проблему, как бы вы решили ее масштабируемым образом.
1. ProjectResource
- это класс (инкапсуляция ресурсов, назначенных для Project
)
2. Каждому ресурсу, назначенному для Project, является User
Class
3.EachUser
в Project
также имеет ReportingHead
и ProjectManager
, которые также являются экземплярами User
4. Наконец, существует класс Project
, содержащий детали проекта
Обозначения используемых классов
Пользователь
Проект
ProjectResource
Диаграмма таблицы
ProjectResource
ResourceId
ProjectId
UserId
ReportingHead
ProjectManager
Диаграмма классов
ProjectResource
ResourceId: String / Guid
Проект: Проект
Пользователь: пользователь
ReportingHead: Пользователь
ProjectManager: Пользователь
примечание:
Вся пользовательская информация хранится в таблице User
Вся информация о проекте хранится в таблице Project
Вот проблема
Когда запросы приложения на ресурс в проекте выполняются ниже
Сначала получите записи для проекта
Получите ID пользователя, сделайте запрос (используя Users DAL
), чтобы получить экземпляр пользователя
Получите ProjectId, сделайте запрос (используя Projects DAL
), чтобы получитьинформация о проекте
Наконец, присвойте Users
и Project
экземпляру ProjectResource
, ясно, что вы можете видеть 3 Db Calls
сделаныздесь для populating single ProjectResource
но проблемы и кто управляет объектами четко определены. Это способ, которым я запланировал , поскольку в Sql Server
& ADO.net
& 1139 ** также имеется
connection pooling
. Есть также другой способ, где все детали извлекаются в одном виде.нажмите «Внутренние объединения таблиц», а затем «Заполнение».
Какой путь мне следует выбрать и почему?
Дополнительно:
.NET 2.0, ASP.net 2.0, C #,Sql Server 2005, БД на том же компьютере, на котором размещено приложение.