Какая польза от создания доменной модели? - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть два класса:

Order
int OrderId
string OrderName
List<Product> Products

Product
int ProductId
string ProductName
Order Order

У меня есть две таблицы: заказ, продукт в MS SQL DB

Я хочу показать в интерфейсе список заказов в поле со списком. При выборе заказа отображается список товаров.

У меня есть хранимая процедура, которая возвращает таблицу продуктов для заказа: GetProductByOrderId У меня есть процедура storderd, которая возвращает таблицу заказов: GetOrders

Как мне сопоставить эту таблицу с классом продукта?

Буду ли я делать что-то вроде этого:

Product product = new Product();
product.Name = reader["Name"]
product.Order = new Order();
product.Order.Id = reader["OrderId"];

Или я должен изменить свою модель класса, чтобы для класса Product у меня был только OrderId, и я сопоставлю модели своих классов так, чтобы они выглядели идентичными таблицам моей базы данных?

Когда я получу объекты Order, я должен создать

Order order = new Order();
order.Products = new List<Product>()

даже если мне не нужно получать продукты, тогда какой смысл иметь их в списке?

Я не вижу преимуществ правильной доменной модели, когда все, что я делаю, это задаю несколько свойств связанных сущностей?

P.S. Исходное приложение включает более 65 таблиц.

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Если у вас есть только минимальные потребности, нет причин, по которым вам «нужно» настроить модель вашего домена таким образом. Обычно я устанавливаю свои отношения в базе данных, а затем импортирую в Entity Data Model, как это делается в SQL Server. Одна из целей, которая служит этому, заключается в том, что я могу легко создавать иерархические списки на основе моих данных. И создает для себя и других разработчиков визуальное представление о том, как должны взаимодействовать данные.

Так что, если у вас есть только две таблицы, и вы не беспокоитесь об этом, нет никаких причин для этого.

1 голос
/ 02 февраля 2012

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

Ваш вопрос касается навигации по объектной модели.Итак, когда вы выбираете свой заказ, как вы собираетесь получить список продуктов - прокрутите каждый продукт, чтобы проверить его идентификатор заказа?В зависимости от того, какое заявление вы заполнили, может быть лучше использовать order.products один-ко-многим.

Разве это не более понятно?Когда у вас большая модель и вы передаете ее другим, разве это не сделает ее более удобной для обслуживания?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...