【问题标题】:Tools for mapping business objects (DTO objects) from entities in asp.net mvc?从asp.net mvc中的实体映射业务对象(DTO对象)的工具?
【发布时间】:2010-11-23 08:56:25
【问题描述】:

是否有任何工具或实用程序(映射器程序集)可以从实体(使用 linq -> sql 、实体框架或其他从 DB 中获取)构造业务对象

在没有一个的情况下,任何人都可以提出可以完成的最佳方法,而不是可以从实体类中复制粘贴属性(我现在正在做的事情)。?

vijay

【问题讨论】:

  • 除了LINQ,还需要什么?
  • linq -> sql 给了我数据对象。如何将它们映射到自定义的业务对象。?

标签: asp.net linq entity-framework data-binding datamapper


【解决方案1】:

【讨论】:

  • AutoMapper 不会在单个查询中加载相关实体。 LINQ 会。
【解决方案2】:

您通过投影映射到业务对象。即使您的 POCO 业务对象与您的实体具有不同的形状,这仍然有效。

var q = from dataObject in Context.DataObjects
        select new BusinessObject
        {
            Name = dataObject.Name,
            RelatedObjectName = dataObject.RelatedObject.Name, // works even if RelatedObject is null
            DirectChildren = from c in dataObject.Children
                             select new ChildBusinessObject
                             {
                                 Name = c.Name
                                 // etc.
                             }
            GrandChildren = from c in dataObject.Children
                            from gc in c.Children
                            select new ChildBusinessObject
                            {
                                Name = c.Name
                                // etc.
                            },
            // etc.
        };

【讨论】:

  • 那是伟大的克雷格。你能推荐任何工具吗?自动化相同。为每个实体手动执行此操作真的很乏味。
  • 我发现 LINQpad 非常有价值,它支持 LINQ to Entities。但是,它不会自动执行此操作。不过,VS IntelliSense 通常对我来说就足够了;您最终只需要输入很少的实际查询。我不想完全自动执行此操作,因为如果您只选择业务方法实际需要的相关对象,而不是实体的每个属性,性能会大大提高。
【解决方案3】:

这不是直接回答您的问题 - 但对于不太复杂的项目,我使用此产品 http://www.devexpress.com/Products/NET/ORM/(来自 DevExpress 的 .NET Object-Relational Mapper Tool)

【讨论】:

  • 你说的是ORM工具。获取数据对象。我现在需要从数据对象构建的业务对象。
【解决方案4】:

使用 Automapper 的示例,cmapper 是一个 Meldmapping 类,

 cMapper.FillBusinessObject(ViewModel, BusinessObject);  // To map from ViewModel to BO

 cMapper.FillModel(BusinessObject, ViewModel);  // To map from BO to ViewModel

感谢您的投票:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-12
    • 2019-08-08
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多