实体模型
public partial class Categoies
{
public Categoies()
{
this.Posts = new HashSet<Posts>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public Nullable<int> PositionId { get; set; }
public virtual CategoryPositions CategoryPositions { get; set; }
public virtual ICollection<Posts> Posts { get; set; }
}
查看模型
public class CategoriesViewModel
{
public int Id { get; set; }
[Required(ErrorMessage = "{0} alanı boş bırakılmamalıdır!")]
[Display(Name = "Kategori Adı")]
public string Name { get; set; }
[Display(Name = "Kategori Açıklama")]
public string Description { get; set; }
[Display(Name = "Kategori Pozisyon")]
[Required(ErrorMessage="{0} alanı boş bırakılmamalıdır!")]
public int PositionId { get; set; }
}
CreateMap
Mapper.CreateMap<CategoriesViewModel, Categoies>()
.ForMember(c => c.CategoryPositions, option => option.Ignore())
.ForMember(c => c.Posts, option => option.Ignore());
地图
[HttpPost]
public ActionResult _EditCategory(CategoriesViewModel viewModel)
{
using (NewsCMSEntities entity = new NewsCMSEntities())
{
if (ModelState.IsValid)
{
try
{
category = entity.Categoies.Find(viewModel.Id);
AutoMapper.Mapper.Map<CategoriesViewModel, Categoies>(viewModel, category);
//category = AutoMapper.Mapper.Map<CategoriesViewModel, Categoies>(viewModel);
//AutoMapper.Mapper.Map(viewModel, category);
entity.SaveChanges();
// Veritabanı işlemleri başarılı ise yönlendirilecek sayfayı
// belirleyip ajax-post-success fonksiyonuna gönder.
return Json(new { url = Url.Action("Index") });
}
catch (Exception ex)
{
}
}
// Veritabanı işlemleri başarısız ise modeli tekrar gönder.
ViewBag.Positions = new SelectList(entity.CategoryPositions.ToList(), "Id", "Name");
return PartialView(viewModel);
}
}
错误
缺少类型映射配置或不支持的映射。映射类型: Categoies_7314E98C41152985A4218174DDDF658046BC82AB0ED9E1F0440514D79052F84D NewsCMS.Areas.Admin.Models.CategoriesViewModel System.Data.Entity.DynamicProxies.Categoies_7314E98C41152985A4218174DDDF658046BC82AB0ED9E1F0440514D79052F84D CategoriesViewModel -> ->
目的路径: Categoies_7314E98C41152985A4218174DDDF658046BC82AB0ED9E1F0440514D79052F84D
源值: NewsCMS.Areas.Admin.Models.CategoriesViewModel
我遗漏了什么?我试着找,但我看不到问题。
更新
我已经在Global.asax的application_start中指定了
protected void Application_Start()
{
InitializeAutoMapper.Initialize();
}
InitializeClass
public static class InitializeAutoMapper
{
public static void Initialize()
{
CreateModelsToViewModels();
CreateViewModelsToModels();
}
private static void CreateModelsToViewModels()
{
Mapper.CreateMap<Categoies, CategoriesViewModel>();
}
private static void CreateViewModelsToModels()
{
Mapper.CreateMap<CategoriesViewModel, Categoies>()
.ForMember(c => c.CategoryPositions, option => option.Ignore())
.ForMember(c => c.Posts, option => option.Ignore());
}
}
发布于 2013-02-04 07:35:11
我找到了解决方案,感谢大家的回复。
category = (Categoies)AutoMapper.Mapper.Map(viewModel, category, typeof(CategoriesViewModel), typeof(Categoies));
但是,我已经不知道原因了。我不能完全理解。
发布于 2013-02-04 06:48:09
您在哪里指定了映射代码(CreateMap)?参考:Where do I configure AutoMapper?
如果您使用的是静态映射器方法,每个AppDomain应该只进行一次配置。这意味着放置配置代码的最佳位置是应用程序启动,比如ASP.NET应用程序的Global.asax文件。
如果在调用Map方法之前没有注册配置,您将收到Missing type map configuration or unsupported mapping.
发布于 2014-11-13 19:54:18
在您的类AutoMapper
配置文件中,您需要为您的实体和视图模型创建一个映射。
ViewModel到域模型的映射:
这通常是在AutoMapper/DomainToViewModelMappingProfile
中
在Configure()
中,添加一行,如下所示
Mapper.CreateMap<YourEntityViewModel, YourEntity>();
域模型到ViewModel的映射:
在ViewModelToDomainMappingProfile
中,添加:
Mapper.CreateMap<YourEntity, YourEntityViewModel>();
https://stackoverflow.com/questions/14677889
复制相似问题