映射.edmx在数据库中进行更改后将属性复制到DTO

时间:2015-09-21 12:57:04

标签: c# asp.net-mvc automapper

我是AutoMapping概念的新手。我正在为我的应用程序使用数据库第一种方法,因此生成了一个.edmx文件,我已经将我的.edmx文件中存在的实体映射到了DTO&#39。

现在我的问题是每当我通过在模型浏览器中更新数据库来更改.edmx实体文件时,我必须手动更改DTO entites,

所以我怀疑我的映射是否有效。当我更新我的.edmx文件时,有什么方法我不必手动进行这些更改并且DTO会发生变化吗? 或者是因为我没有正确配置我的自动播放器?

这是我的自动映射器配置。

AutoMapperWebConfiguration.cs

class AutoMapperWebConfiguration 
{
    public static void Configure()
    {
        Mapper.Initialize(cfg =>
        {
            cfg.AddProfile(new UserProfile());
            cfg.AddProfile(new PostProfile());
        });
    }
}

UserProfile.cs

public class UserProfile : Profile
{
    protected override void Configure()
    { 
        Mapper.CreateMap<tabletest,tabletestDTO>();
    }
}

请让我知道要添加到此配置中的内容,以便我可以自动更改我的DTO entites evey time .edmx实体已更新。

1 个答案:

答案 0 :(得分:0)

AutoMapper无法更新您的DTO,它只是映射它。最简单的解决方法是使用Mapper.AssertConfigurationIsValid() method在运行时验证您的配置:

  

AutoMapper会检查以确保每个目标类型   member在源类型上有一个对应的类型成员。

另一个(也是更复杂的)选项是使用T4模板基于实体类生成DTO。