加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 用于EF 4实体模型的DTO生成器

发布时间:2020-12-15 06:56:30 所属栏目:百科 来源:网络整理
导读:是否可以编写t4模板(或者已经存在),这将基于* .edmx文件中的数据能够生成DTO类? 我必须为当前的项目编写DTO类,这个过程有点麻烦. 我想要获取的是获取将标量属性定义为简单自动属性的DTO类,导航参数作为其他DTO类的封装实例. 示例: public class SomeClassD
是否可以编写t4模板(或者已经存在),这将基于* .edmx文件中的数据能够生成DTO类?

我必须为当前的项目编写DTO类,这个过程有点麻烦.

我想要获取的是获取将标量属性定义为简单自动属性的DTO类,导航参数作为其他DTO类的封装实例.

示例:

public class SomeClassDTO
{
    public byte Id { get; set; }

    public string Description { get; set; }        

    public OtherClassDTO SomeProperty {get;set;}

    public IList<AnotherClassDTO> Objects {get;set;}
}

这是一个很好的起点,更可取的可能如下图所示:

/// <summary>
/// Employee details DTO.
/// </summary>
public class EmployeeDetailsDTO
{
    [Key] 
    public long Id { get; set; }

    [Required] 
    public string FirstName { get; set; }

    [Required]
    public string Surname { get; set; }

    ...

    public long? PhotoId { get; set; }

    // Home address properties.


    public string HomeAddressAddressLine1 { get; set; } // This is just name of field,not flattened list 
    public string HomeAddressAddressLine2 { get; set; }
    public string HomeAddressAddressLine3 { get; set; }
    public string HomeAddressPostcode { get; set; }
    public short? HomeAddressCountryId { get; set; }
    public long? HomeAddressCountyId { get; set; }
    public long? HomeAddressTownId { get; set; }


    public short? HomeTelephoneCountryId { get; set; }        
    public string HomeTelephoneNumber{ get; set; }
    public string HomeTelephoneExtension { get; set; }


    public short? PersonalMobileCountryId { get; set; }      
    public string PersonalMobileNumber { get; set; }
    public string PersonalMobileExtension { get; set; }

}

您可以看到这是一个扁平的DTO,它代表复合结构,并可以通过ValueInjector SameNameFlat / UnFlat注入向实体注入.

这是最终的目标,尽管任何建议都不会被赞赏.

解决方法

我最近在CodePlex发布了一个名为EntitiesToDTO的实体框架DTO生成器,它是免费的和开源的,它被用作Visual Studio 2010和2012的AddIn.我认为这将为您提供帮助.

去http://entitiestodtos.codeplex.com下载,让我知道你的想法;)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读