在我的项目中发生了非常奇怪的事情,我有一个非常简单的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; }
}
你可以在你的代码中测试这个案例吗?