EF6 Linq查询以视图模型联接表

微厨师

当前的错误代码给我带来了我无法理解的问题,第67行:

LINQ to Entities不支持指定的类型成员'ClinicalAssetID'。仅支持初始化程序,实体成员和实体导航属性。

我试图将DashBoard两个具有关系数据的模型引入视图,即ClinicalAssetID使用LINQviewmodel

不确定我的代码是否正确运行?

控制器:

namespace Assets.Areas.Clinical.Controllers
{
    public class ClinicalAssetsController : Controller
    {
        private ClinicalContext db = new ClinicalContext();
        [Authorize]
        // GET: Clinical/ClinicalAssets
        public async Task<ActionResult> DashBoard(string sortOrder, string currentFilter,string searchString, int? page)
        {
            ViewBag.CurrentSort = sortOrder;
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.CurrentFilter = searchString;

            var clinicalAssets = (from s in db.ClinicalAssets
                                  join cp in db.ClinicalPATs on s.ClinicalAssetID equals cp.ClinicalAssetID


                                 select new ClinicalASSPATVM
                                 {
                                     InspectionDocumnets = cp.InspectionDocumnets,
                                 });


            if (!String.IsNullOrEmpty(searchString))
            {
                clinicalAssets = clinicalAssets.Where(s => s.SerialNo.Contains(searchString)
                                       || s.PoNo.Contains(searchString));
            }

            switch (sortOrder)
            {
                case "name_desc":
                    clinicalAssets = clinicalAssets.OrderByDescending(s => s.PoNo);
                    break;
                case "Date":
                    clinicalAssets = clinicalAssets.OrderBy(s => s.PurchaseDate);
                    break;
                default:
                    clinicalAssets = clinicalAssets.OrderBy(s => s.ClinicalAssetID);
                    break;
            }
            int pageSize = 10;
            int pageNumber = (page ?? 1);
            return View(await clinicalAssets.ToPagedListAsync(pageNumber, pageSize));

临床ASSPATVM:

namespace Assets.Areas.Clinical.Models
{
    public class ClinicalASSPATVM
    {
        public int ClinicalAssetID { get; set; }
        public string SerialNo { get; set; }
        public DateTime? PurchaseDate { get; set; }
        public string PoNo { get; set; }
        public float? Costing { get; set; }
        public string InspectionDocumnets { get; set; }

        public virtual Model ModelName { get; set; }
        public virtual BudgetCode Code { get; set; }
        public virtual Product ProductName { get; set; }
        public virtual AssetType AssetTypeName { get; set; }
        public virtual Manufacturer ManufacturerName { get; set; }
        public virtual Staff StaffName { get; set; }
        public virtual Team TeamName { get; set; }
        public virtual Supplier SupplierName { get; set; }
    }

}

临床资产:

namespace Assets.Areas.Clinical.Models
{
    public class ClinicalAsset
    {
        [Key]
        public int ClinicalAssetID { get; set; }
        public int AssetTypeID { get; set; }
        public int? ProductID { get; set; }
        public int? ManufacturerID { get; set; }
        public int? ModelID{ get; set; }
        public int? SupplierID { get; set; }
        [StringLength(100, MinimumLength = 2)]
        public string SerialNo { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
        public DateTime? PurchaseDate { get; set; }
        [StringLength(100, MinimumLength = 2)]
        public string PoNo { get; set; }
        [DataType(DataType.Currency)]
        [DisplayFormat(DataFormatString = "{0:C0}")]
        public float? Costing { get; set; }
        public int? TeamID { get; set; }
        public int? BudgetCodeID { get; set; }
        public int? StaffID { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]


        public virtual Model ModelName { get; set; }
        public virtual BudgetCode Code { get; set; }
        public virtual Product ProductName { get; set; }
        public virtual AssetType AssetTypeName { get; set; }
        public virtual Manufacturer ManufacturerName { get; set; }
        public virtual Staff StaffName { get; set; }
        public virtual Team TeamName { get; set; }
        public virtual Supplier SupplierName { get; set; }
        public List<ClinicalPAT> ClinicalPATs { get; set; }
    }
}

ClinicalPAT:

namespace Assets.Areas.Clinical.Models
{
    public class ClinicalPAT
    {
        [Key]
        public int ClinicalPATID { get; set; }
        public int ClinicalAssetID { get; set; }
        public DateTime? WarrantyEndDate { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:ddd/MMMM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime? InspectionDate { get; set; }
        public int? InspectionOutcomeID { get; set; }
        [StringLength(100, MinimumLength = 2)]
        public string InspectionDocumnets { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:ddd/MMMM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime? InspectionDueDate { get; set; }

        public virtual InspectionOutcome InspectionOutcomeResult { get; set; }
    }
}
dev4s

更改

from s in db.ClinicalAssets
join cp in db.ClinicalPATs on s.ClinicalAssetID equals cp.ClinicalAssetID
select new ClinicalASSPATVM
{
    InspectionDocumnets = cp.InspectionDocumnets,
}

from s in db.ClinicalAssets
join cp in db.ClinicalPATs on s.ClinicalAssetID equals cp.ClinicalAssetID
select new ClinicalASSPATVM
{
    ClinicalAssetID = cp.ClinicalAssetID,
    InspectionDocumnets = cp.InspectionDocumnets
}

链接:LINQ to Entities不支持指定的类型成员。仅支持初始化程序,实体成员和实体导航属性

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF6和预生成的视图

来自分类Dev

EF6 LINQ铸柱

来自分类Dev

EF6 LINQ铸柱

来自分类Dev

使用EF6的异步查询结果

来自分类Dev

EF6在查询中插入“ \ n”?

来自分类Dev

DbContext / EF6上的eSQL查询

来自分类Dev

EF6在查询中插入“ \ n”?

来自分类Dev

EF6 从 MySQL 表中选择

来自分类Dev

拦截所有EF6 Linq查询

来自分类Dev

如何通过EF6使用group by从表中查询?

来自分类Dev

如何使用EF6的分组依据从表中查询?

来自分类Dev

无法添加实体数据模型(EF6)

来自分类Dev

EF6代码优先模型ForeignKey

来自分类Dev

在EF6中添加多对多视图

来自分类Dev

EF6 Code First预生成的C#视图

来自分类Dev

使用EF6和LINQ深度加载数据

来自分类Dev

使用Linq返回EF6中的相关实体

来自分类Dev

在EF6中执行复杂的原始SQL查询

来自分类Dev

EF6 生成不需要的 SQL 查询

来自分类Dev

如何在EF6中使用临时表

来自分类Dev

EF6表拆分与多个拆分的共享主键

来自分类Dev

使用EF6迁移失败重命名身份表

来自分类Dev

EF6表拆分与多个拆分的共享主键

来自分类Dev

使用EF6迁移更改表之间的关系

来自分类Dev

阻止在EF6中为特定实体生成表

来自分类Dev

EF6 多对多关系,多表连接表

来自分类Dev

如何使用EF6在c#模型中创建多列“参考”索引(联接索引)

来自分类Dev

从EF6中的多对多联接表返回一列

来自分类Dev

从EF6中的多对多联接表返回一列