繁体   English   中英

用于连接带有视图模型的表的 EF6 Linq 查询

[英]EF6 Linq query for joining tables with view model

当前的错误代码给我带来了一个我无法破译的问题,第 67 行:

LINQ to Entities 不支持指定的类型成员“ClinicalAssetID”。 仅支持初始值设定项、实体成员和实体导航属性。

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

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

控制器:

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; }
    }
}

临床PAT:

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; }
    }
}

改变

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 不支持指定的类型成员。 仅支持初始值设定项、实体成员和实体导航属性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM