c# – Automapper中的行为不一致

在我的项目中发生了非常奇怪的事情,我有一个非常简单的CLR对象,
第一个是模型其他是ViewModel,在我编译项目后运行我的WebApi ASP.NET项目,使用所需的参数,我可以看到我的模型返回数据.

有一次我可以看到Mapper确实映射好了,第二次它返回所有带空值的东西.
问题不是一直发生的.

非常重要:更新于2013年3月14日
当我回收应用程序时,它停止这样做,
但过了一段时间它再次开始这样做,我重新保存web.config文件
然后它又好了.

这是我的Model / ViewModel:

public class Gallery : Entity
{
    public override long Id { get; set; }
    public virtual Settings SiteOwner { get; set; }
    public virtual Category Category { get; set; }
    public virtual string PageTitle { get; set; }
    public virtual string TitleDescription { get; set; }
    public virtual string GalleryTitle { get; set; }
    public virtual IList<UIItem> GalleryItems { get; set; }
}

public class UIItem : Entity
{
    public override long Id { get; set; }
    public virtual Product Product { get; set; }
    public virtual Gallery Gallery { get; set; }
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual string Price { get; set; }
    public virtual string ImageUrl { get; set; }
    public virtual string VideoUrl { get; set; }
    public virtual string FileUrl { get; set; }
}
public class GalleryViewModel
{
    public virtual string PageTitle { get; set; }
    public virtual string TitleDescription { get; set; }
    public virtual string GalleryTitle { get; set; }
    public virtual IList<UIItemViewModel> GalleryItems { get; set; }
}

public class UIItemViewModel
{
    public virtual long Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual string Price { get; set; }
    public virtual string ImageUrl { get; set; }
    public virtual string VideoUrl { get; set; }
    public virtual string FileUrl { get; set; }
}

这是我使用它的方式

// my apicontroller

// FindGalleryByAppIdAndCategoryId returns => Gallery 
var source = _galleryRepository.FindGalleryByAppIdAndCategoryId(appId, catId);
return Mapper.DynamicMap<GalleryViewModel>(source);

解决方法:

很可能这种情况发生在Gallery和UIItem有交叉引用的情况下:

public class Gallery : Entity
{
    public virtual IList<UIItem> GalleryItems { get; set; }
}

public class UIItem : Entity
{
    public virtual Gallery Gallery { get; set; }
}

你可以在你的代码中测试这个案例吗?

上一篇:jQueryMobile引入文件后样式无法正常显示


下一篇:c# – 使用ConstructServicesUsing的AutoMapper自定义类型转换