ورود

View Full Version : سوال: چگونه استفاده از ارتباط جداول وقتی که از viewmodel و autommaper استفاده می کنید؟



r4hgozar
دوشنبه 12 بهمن 1394, 12:02 عصر
سلام.
به عنوان مثال من 2 تا جدول زیر رو دارم

public class Product
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
[MaxLength(10)]
public string Price { get; set; }
//relation
public Guid? PImageId { get; set; }
[ForeignKey("PImageId")]
public virtual PImage PImage { get; set; }
}


و

[Key]
public Guid Id { get; set; }
[MaxLength(200)]
public string Name { get; set; }
public string ImgUrl { get; set; }
public DateTime? IDateTime { get; set; }
public ICollection<Product> Products { get; set; }



و ویو مدل بصورت زیر

public class ProductAVm
{
public int Id { get; set; }
public string Name { get; set; }
[MaxLength(10)]
public string Price { get; set; }
[MaxLength(10)]
public Guid? PImageId { get; set; }
public virtual PImageAVm PImage { get; set; }
}




خوب بصورت زیر هم اینها رو با هم مپ می کنیم


public IEnumerable<ProductAVm> Gets()
{
var model = _repository.Gets();
Mapper.CreateMap<Product, ProductAVm>();
return Mapper.Map<IEnumerable<Product>, IEnumerable<ProductAVm>>(model);
}




اما موقع استفاده از اون به ارور زیر برخورد می کنم! حتما باید از مدل استفاده کنم و نمی شه ویو مدل رو استفاده کرد؟

138770


http://s6.picofile.com/file/8236438626/erormap.png

hakim22
دوشنبه 12 بهمن 1394, 14:41 عصر
نیازی نیست که به صورت IEnumerable مپ کنید. می توانید با Select و استفاده از Predicate کار رو انجام بدید :


return _userRepository.GetAll().Select(Mapper.Map<ApplicationUser, UserViewModel>);

r4hgozar
دوشنبه 12 بهمن 1394, 16:39 عصر
منظور من این بود که این ارتباط رو نگاه کنید هر محصول می تونه یک عکس داشته باشه و هر عکس می تونه برای چند محصول استفاده بشه.
حالا من می تونم بدون کوئری زدن بیام و بگم کدوم عکس برای کدوم محصوله؟
یا حتما باید با یک شرط بررسی بشه