每当我将 Dish 类包含到餐厅类中时,都会发生 Missing type map configuration or unsupported mapping
异常。然而,当我不包括菜类时,一切正常。如何在不发生此错误的情况下包含菜类?
实体模型:
public class Restaurant : IEqualityComparer<Restaurant>
{
public Restaurant()
{
}
public int Id { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public bool HasDelivery { get; set; }
public int AdressId { get; set; }
public virtual Adress Adress{ get; set; }
public List<Dish> Dishes { get; set; }
public bool Equals(Restaurant x,Restaurant y)
{
if (x.Name == y.Name) return true;
else return false;
}
public int GetHashCode([DisallowNull] Restaurant obj)
{
return 1;
}
}
视图模型:
public class RestaurantDataModel : IEqualityComparer<Entitties.Restaurant>
{
public RestaurantDataModel()
{
}
public int Id { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public bool HasDelivery { get; set; }
public string City { get; set; }
public string Street { get; set; }
public int HomeNumber { get; set; }
public List<DishDataModel> Dishes { get; set; }
public bool Equals(Entitties.Restaurant x,Entitties.Restaurant y)
{
if (x.Name == y.Name) return true;
else return false;
}
public int GetHashCode([DisallowNull] Restaurant obj)
{
throw new NotImplementedException();
}
}
创建地图:
public class RestaurantMapper
{
IMapper mapper;
public RestaurantMapper()
{
mapper = new MapperConfiguration(config => config.CreateMap<Entitties.Restaurant,DataModels.RestaurantDataModel>()
.ForMember(x=>x.City,c=>c.MapFrom(s=>s.Adress.City))
.ForMember(x => x.HomeNumber,c => c.MapFrom(s => s.Adress.HomeNumber))
.ForMember(x => x.Street,c => c.MapFrom(s => s.Adress.Street))
.ForMember(x => x.Dishes,c => c.MapFrom(s => s.Dishes)))
.CreateMapper();
mapper = new MapperConfiguration(config => config.CreateMap<Entitties.Dish,DataModels.DishDataModel>()).CreateMapper();
;
}
public DataModels.RestaurantDataModel Map(Entitties.Restaurant restaurant)
{
return mapper.Map<DataModels.RestaurantDataModel>(restaurant);
}
public Entitties.Restaurant Map(DataModels.RestaurantDataModel restaurantDataModel)
{
return mapper.Map<Entitties.Restaurant>(restaurantDataModel);
}
}
MAP :
[HttpGet]
public actionResult<IEnumerable<RestarantApplicationDataBase.Entitties.Restaurant>> getallRestaurants()
{
RestaurantRepository.SaveChanges();
var result = RestaurantRepository.GetallRestaurants().FirstOrDefault();
var g = mRestaurantMapper.Map(result);
return Ok(g);
}
我将菜肴加入餐厅的方法:
public IEnumerable<Entitties.Restaurant> GetallRestaurants()
{
var allRestaurants = new List<Restaurant>();
var restaurant = dbContext.Restaurants.Include(c=>c.Adress).Include(c=>c.Dishes).ToList();
foreach (var item in restaurant)
{
allRestaurants.Add(item);
}
return allRestaurants;
}