创建域模型有什么用?

时间:2012-02-01 20:07:43

标签: c# java asp.net asp.net-mvc-3 oop

我有两个班级:

Order
int OrderId
string OrderName
List<Product> Products

Product
int ProductId
string ProductName
Order Order

我有两个表:订单,MS SQL DB中的产品

我想在UI上显示组合框中的订单列表。在选择订单时,会显示产品列表。

我有一个存储过程,它返回订单的产品表: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 个答案:

答案 0 :(得分:1)

如果你认为没有必要,你不必这样做 - 也许开销大于收益。

您的问题是关于对象模型的导航。因此,当您选择订单时,您将如何获得产品列表 - 循环浏览每个产品以检查其订单ID? 根据您的完整申请,最好使用order.products一对多。

这也不是更容易理解吗?当你的模型很大并且你交给其他人时 - 这不会使它更易于维护吗?

答案 1 :(得分:1)

如果您只有最低限度的需求,那么您没有理由以这种方式“设置”您的域模型。通常我在数据库中设置我的关系,然后导入到在SQL Server中设置的实体数据模型。这样做的目的之一是我可以根据我的数据轻松构建分层列表。并为我自己和其他开发人员构建一个关于数据如何交互的可视化表示。

因此,如果您只有两张桌子,并且不担心,那么您没有必要这样做。