从两个类(模型)创建ViewModel会产生“No Key Defined”错误“

时间:2017-04-23 20:39:57

标签: c# asp.net-mvc entity-framework

我正在学习C#并且遇到了viewmodels和AutoMapper的问题。

我目前有两个模型类和一个视图模型,如下所示:

using System.ComponentModel.DataAnnotations;

namespace CarShowroom.Models
{
    public class CarModel
    {
        [Key]
        public int ModelID { get; set; }
        public string Manufactuer { get; set; }
        public string Model { get; set; }
        public int ModelYear { get; set; }
        public virtual Manufacturer manufacturer { get; set; }
        public static int ManufacturerID { get; internal set; }
    }
}

using System.ComponentModel.DataAnnotations;
using System.Collections.Generic;

namespace CarShowroom.Models
{
    public class Manufacturer
    {
        [Key]
        public int ManufacturerID { get; set; }
        public string ManufacturerName { get; set; }
        public virtual List<CarModel> carModels { get; set; }
    }
}

using System.Collections.Generic;

namespace CarShowroom.Models
{
    public class CarViewModel
    {
        public IList<CarModel> CarModel { get; set; }
        public Manufacturer Manufacturer { get; set; }
    }
}

问题是当我尝试使用CarViewModel类添加控制器时,收到错误消息

  

CarViewModel:EntityType'CarViewModel'没有定义键。定义此EntityType的键   CarViewModels:EntityType:EntitySet'CarViewModels'基于类型'CarViewModel',没有定义键。'

我已经研究过如何在线创建视图模型,并且发现您不需要键,因为这不是数据库表。请问有人可以建议我在制作视图模型时出错了,为什么EF认为这应该是一张桌子?

我也尝试过使用AutoMapper,但是我发现的教程太旧了,他们使用的功能现已被删除,我无法找到一个新的教程,它真正解释了如何实现映射以及我应该在哪里写'地图'。

如果有人可以就两种解决方案中的任何一种提出建议,那么我就可以继续学习,我会非常感激,因为我已经坚持这个问题好几周了。我一直在寻找一个使用AutoMapper的小型完成的项目/教程,这样我就可以阅读并理解AutoMapper的工作原理以及它应该如何/在哪里写,但我找不到任何东西。

谢谢, 丹尼。

0 个答案:

没有答案