实体或复杂类型' '无法在LINQ to Entities查询中构造

时间:2017-02-01 19:02:15

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

这很奇怪,而不仅仅是错误说的是什么,所以请仔细阅读。

我知道我不能投射到一个实体而我不是想这样做,但出于某种原因,运行时认为我是,我无法弄清楚原因。

背景: 这段代码正在工作。我正在向有问题的班级投射,没问题。我开始调整一些事情,当我开始收到错误时,我退出了我正在处理的更改,但我仍然遇到问题。

我想我所做的事情已经导致运行时认为ProtocolView类不是实体。

以下是控制器的动作源。这段代码正在运行VERBATIM。

public ActionResult Index(string searchTerm = null)
{
    var model =
        (from p in db.t_Protocol
        join pt in db.t_ProtocolType on p.ProtocolTypeId equals pt.ProtocolTypeID
        orderby p.Protocol, pt.ProtocolTypeOrdinal
        select new ProtocolView
        {
            ProtocolId = p.ProtocolId,
            Protocol = p.Protocol,
            ProtocolType = pt.ProtocolType,
            IsAdmission = p.IsAdmission,
            IsReleased = p.IsReleased
        });

    if (searchTerm != null && searchTerm.Length > 0)
    {
        model = model.Where(p => p.Protocol.StartsWith(searchTerm));
    }

    return View(model);
}

该观点期待:@model IEnumerable<ECM.Models.ProtocolView> 该视图正在做一个简单的foreach(这基本上是锅炉板代码)。

这是类定义。我确实在这里进行了一些更改,但已删除它们。我不是100%我做的一切都是正确的,但这是一个非常基本的类def,我无法看到任何可能导致错误的内容。

namespace ECM.Models
{
   public class ProtocolView
    {
        [Key]
        public Guid ProtocolId { get; set; }

        public string Protocol { get; set; }

        [Display (Name = "Protocol Type")]
        public string ProtocolType { get; set; }

        [Display (Name = "Admission")]
        public byte IsAdmission { get; set; }

        [Display (Name = "Released")]
        public byte IsReleased { get; set; }
    }
}

0 个答案:

没有答案