【问题标题】:How do I hook up classes to my Linq-to-Sql?如何将类连接到我的 Linq-to-Sql?
【发布时间】:2013-01-23 19:40:59
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: c# asp.net-mvc-3 linq linq-to-sql


    【解决方案1】:

    如果您想将实体类与部分 DAO 类分开(这对于重要的应用程序来说是一件好事),最直接的方法是在两者之间创建一个映射层(例如 PropertyA 在您的DAO 类映射到您的 Entity 类中的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);
        }
    }
    

    【讨论】:

    • 好的,这对我来说有点道理。你知道我在哪里可以找到这样的例子吗?谢谢。
    • 他们的wiki 有很多例子。如果遇到困难,您还可以在此处提出具体问题。
    • 不一定是 AutoMapper 的示例,而是如何分离实体类但仍将它们映射回 DBML 生成的部分类。
    • 好的,知道了。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多