Automapper忽略了DTO内部的DTO

时间:2015-10-25 13:20:12

标签: c# azure automapper azure-mobile-services

我正在使用Azure移动服务并且运行良好,除了我在AutoMapper和DTO与其他DTO内部有问题。基本上它们在输出中被忽略。

我的数据类:

public class FoodSupplyProvider
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Index(IsClustered = true)]
    [Key]
    public int FoodSupplyProviderId { get; set; }
    public string Name { get; set; }
    public virtual Branche Branche { get; set; }      
}

public class Branche
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Index(IsClustered = true)]
    [Key]
    public int BrancheId { get; set; }
    public string BrancheName { get; set; }
}

我的DTO课程

public class BrancheDTO : EntityData
{     
    public string BrancheName { get; set; }
}

public class FoodSupplyProviderDTO : EntityData
{        
    public string Name { get; set; }
    public BrancheDTO Branche { get; set; }
}

我已经使用Mapper注册了映射:

cfg.CreateMap<Branche, BrancheDTO>();
cfg.CreateMap<FoodSupplyProvider, FoodSupplyProviderDTO>();

输出:

当我尝试输出FoodSupplyProviderDTO时,它如下:

[{
"id":"2b3fdde5-ba55-4e7f-ae74-5e23abaa7b64",
"name":"FoodSupplyProvider Name 1"
}]

我希望它是:

[{
"id":"2b3fdde5-ba55-4e7f-ae74-5e23abaa7b64",
"name":"FoodSupplyProvider Name 1"
"branche":"The BrancheDTO goes here...."
}]

请注意,预期的输出也是文档在我的API上所说的。

我已经检查过该值不为null,我甚至尝试将Branche的名称映射到FoodSupplyProviderDTO的名称,并且完全正常,除了Branche仍然不在输出中。

编辑:

正如@YacoubMassad所说,这可能是制图或者僵化失败。我已经尝试输出映射,它按预期工作。然后我尝试在代码中将json序列化并输出结果。那个是上面显示的预期结果。

问题在于WebApi为我串行化了对象。无论如何我可以调试这个吗?

0 个答案:

没有答案