0

Linq / Linq-to-Sql / C# 新手问题,但我似乎找不到任何有用的信息。我可能没有正确地表达这个问题。任何帮助表示赞赏。

所以,我有一些现有的数据库表,并从中生成了 DBML 文件。我有部分类和 DataContext。如何将我的实体类连接回这个?

我只是错过了一些非常明显的东西吗?

谢谢

4

1 回答 1

2

如果你想让你的实体类与你的部分 DAO 类分开(这对于非平凡的应用程序来说是一件好事),最直接的方法是在两者之间创建一个映射层(例如PropertyA在你的 DAO 类中映射PropertyB到你的实体类)。

如果两个层之间的大多数字段名称/类型相同,那么节省大量冗余编码的一种方法是使用像AutoMapper这样的映射库。它可以轻松处理相同的属性,并且可以在大多数情况下配置为处理不同的属性而无需太多努力。

在 MVC 项目中,我通常在存储库中执行此操作。我将拥有Map()接受一种对象并创建另一种对象的函数。例如,要将数据层Order类映射到域层Order类:

public Domain.Order GetOrder(int orderID)
{
    Data.Order order = context.Orders.Where(o => o.OrderID = orderID);  // 
    Domain.Order newOrder = Map(order);
    return newOrder;
}

public Domain.Order Map(Data.Order order)
{
    if (!UsingAutomapper)
    {
        // raw way
        Domain.Order newOrder = new Domain.Order
                           {
                               ID         = order.OrderID,
                               Number     = order.OrderNumber,
                               OrderDate  = order.OrderDate
                           };
        return newOrder;
    }
    else  // let AutoMapper do the dirty work
    {
        return Mapper.Map(order);
    }
}
于 2013-01-23T20:12:07.330 回答