数据读取器在访问存储过程时与指定的错误不兼容?

问题描述

我有一个模型和上下文类,并使用数据库优先方法调用存储过程。

namespace EPICOR
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    using System.Data.Entity.Core.Objects;
    using System.Linq;
    
    public partial class TasksListEntities : DbContext
    {
        public TasksListEntities()
            : base("name=TasksListEntities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public virtual ObjectResult<GetTaskPlans_EPICOR_Result> GetTaskPlans_EPICOR(string functionalLocation,string module)
        {
            var functionalLocationParameter = functionalLocation != null ?
                new ObjectParameter("FunctionalLocation",functionalLocation) :
                new ObjectParameter("FunctionalLocation",typeof(string));
    
            var moduleParameter = module != null ?
                new ObjectParameter("Module",module) :
                new ObjectParameter("Module",typeof(string));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GetTaskPlans_EPICOR_Result>("GetTaskPlans_EPICOR",functionalLocationParameter,moduleParameter);
        }
    }
}

生成的模型类:

namespace EPICOR
{
    using System;
    
    public partial class GetTaskPlans_EPICOR_Result
    {
        public int OperationID { get; set; }
        public string PIRCode { get; set; }
        public string TaskName { get; set; }
        public Nullable<int> OperationNo { get; set; }
        public string OperationCode { get; set; }
        public string OperationDescription { get; set; }
        public string Resource { get; set; }
        public string NDTResources { get; set; }
        public Nullable<double> Duration { get; set; }
        public string requiredEquipmentStatus { get; set; }
        public string TimeBaseInterval { get; set; }
        public Nullable<System.DateTime> StartDate { get; set; }
        public Nullable<System.DateTime> LastInspDate { get; set; }
        public Nullable<System.DateTime> NextInspDate { get; set; }
        public string FunctionalLocation { get; set; }
    }
}

从webapi控制器调用

namespace EPICOR.Controllers
{
    public class EPICORController : ApiController
    {
        TasksListEntities tskEntities = new TasksListEntities();

        [HttpGet]
        public ObjectResult<GetTaskPlans_EPICOR_Result> GetTasksList()
        {


            ObjectResult<GetTaskPlans_EPICOR_Result> tList = (ObjectResult<GetTaskPlans_EPICOR_Result>) tskEntities.GetTaskPlans_EPICOR("","");
            return tList;
        }
    }
}

存储过程:

ALTER PROCEDURE [dbo].[GetTaskPlans_EPICOR]
    @FunctionalLocation varchar(250) = 'B001-20-T-001',@Module varchar(20) = 'PEMS'
AS
BEGIN
    IF(LOWER(@Module) = LOWER('PEMS'))
    BEGIN
        SELECT
            OperationID,PIRCode,TaskName,OperationNo,OperationCode,OperationDescription,Resource,NDTResources,Duration,requiredEquipmentStatus,TimeBaseInterval,StartDate,LastInspDate,NextInspDate,FunctionalLocation   
        FROM
            PIRTaskList
        WHERE
            FunctionalLocation LIKE '%' + @FunctionalLocation + '%'
    END

    IF(LOWER(@Module) = LOWER('PSVMS'))
    BEGIN
        SELECT
            PTList.OperationID,PTList.PIRCode,PTList.TaskName,PTList.OperationNo,PTList.OperationCode,PTList.OperationDescription,PTList.Resource,PTList.NDTResources,PTList.Duration,PTList.requiredEquipmentStatus,PTList.TimeBaseInterval,PTList.StartDate,PTList.LastInspDate,PTList.NextInspDate,PEData.FunctionalLocationNew  'FunctionalLocation'
        FROM
            PSVMS_PIRTaskList PTList
        INNER JOIN
            PSVMS_EnggData PEData ON PEData.EnggID = PEData.EnggID
        WHERE
            PEData.FunctionalLocationNew LIKE '%' + @FunctionalLocation + '%'
    END
    ELSE IF(LOWER(@Module) = LOWER('PimsOFF'))
    BEGIN
        SELECT
            POTlist.OperationID,POTlist.PIRCode,POTlist.TaskName,POTlist.OperationNo,POTlist.OperationCode,POTlist.OperationDescription,POTlist.Resource,POTlist.NDTResources,POTlist.Duration,POTlist.requiredEquipmentStatus,POTlist.TimeBaseInterval,POTlist.StartDate,POTlist.LastInspDate,POTlist.NextInspDate,POTlist.PipelineID  'FunctionalLocation'
        FROM
            PimsOFF_PIRTaskList POTlist
        WHERE
            POTlist.PipelineID LIKE '%' + @FunctionalLocation + '%'
    END
    ELSE IF(LOWER(@Module) = LOWER('PimsON') OR LOWER(@Module) = LOWER('PimsOFF'))
    BEGIN
        SELECT
            POTlist.OperationID,POTlist.PipelineID  'FunctionalLocation'
        FROM
            PimsOFF_PIRTaskList POTlist
        WHERE
            POTlist.PipelineID LIKE '%' + @FunctionalLocation + '%'
    END
    ELSE IF(LOWER(@Module) = LOWER('EIRMS'))
    BEGIN
        SELECT 
            RTlist.OperationID,RTlist.PIRCode,RTlist.TaskName,RTlist.OperationNo,RTlist.OperationCode,RTlist.OperationDescription,RTlist.Resource,RTlist.NDTResources,RTlist.Duration,RTlist.requiredEquipmentStatus,RTlist.TimeBaseInterval,RTlist.StartDate,RTlist.LastInspDate,RTlist.NextInspDate,REq.FunctionalLocation  'FunctionalLocation'
        FROM
            RCM_PIRTaskList RTlist
        INNER JOIN
            RCM_Equipment REq ON REq.EquipmentID = RTlist.EquipmentID
        WHERE 
            REq.FunctionalLocation LIKE '%' + @FunctionalLocation + '%'
    END
END

错误

数据读取器与指定的“ TasksListModel.GetTaskPlans_EPICOR_Result”不兼容。类型为“ OperationID”的成员在数据读取器中没有具有相同名称的对应列

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)