1

一个简单的 linq to SQL 查询可能会返回一个产品对象。显然我可以将此对象传递给我的业务层,然后直接针对该对象读取和更新数据。

我见过一堆实现,在执行 linq 查询之后,结果对象被映射(通过自动映射器或手动)到自定义业务对象。因此,对于我可能拥有 linq 对象的产品:

product.ProductId 和 Product.ProductName

然后我会像这样定义一个自定义产品业务对象:

class BusineszProduct
{
    string ProductId;
    string ProductName;
}

和一些简单的映射代码,如:

业务产品 myProduct = 新业务产品();myProduct.ProductId = 产品.ProductId; myProduct.ProductName = 产品.ProductName;

然后在我的业务层周围传递 myProduct ,修改它,读取它等等,然后更新 linq 对象。

在什么情况下我想创建自定义 BusinessProduct 类?

4

2 回答 2

2

恕我直言,一般原因是将您的业务实体与 Linq2SQL 实体附带的 Linq2SQL ORM 包分离/解开

但是,在极端情况下,您可能有多个映射:

  • “数据访问”层的 Linq2SQL 实体 - 但是这些实体与 L2S DataContext 紧密耦合
  • POCO / 业务实体将用于业务规则应用、验证等
  • 如果您使用 Web 服务或 WCF,您还可以将数据表示为消息实体,例如,如果您需要在通过网络进行序列化时以非常特定的格式呈现实体
  • 最后,如果您有 MVC / MVP / MVVM UI 架构,您可能需要为您的视图量身定制的实体
于 2010-08-25T21:00:59.967 回答
0

在我的应用程序中,我执行了一个 Linq 查询,它连接了六个不同的表,并从每个表中提供了几列。没有与该信息集匹配的特定于表的对象类型。因此,我创建了一个自定义业务类来处理记录集。

您可以自己观看(在http://www.njtheater.org

我按日期从Productions表中选择。它连接到 Play 表(我得到标题和描述)、Troupes 表(我得到剧院公司名称)、Venues 表(我得到剧院名称和城市)。Plays 表加入了 PlayCredits 表,后者加入了 People 表(我在其中获得剧作家的名字)

于 2010-08-25T20:54:10.813 回答