Как исправить 'Нет сопоставления между типом объекта System.Data.SqlClient.SqlParameter и собственным типом известного управляемого поставщика.' ошибка в ASP.Net - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь вызвать хранимую процедуру с контроллера. Это значения приходят от AJAX до контроллера. Как я могу устранить эту ошибку, которую я получаю?

Вот моя хранимая процедура

ALTER PROCEDURE [dbo].[sp_Get_OADetails_By_Customer]
    @CustCode NVARCHAR(15),
    @Status INT,
    @Sdate NVARCHAR(20),
    @Edate NVARCHAR(20)
AS
BEGIN
    SELECT   
        O.OANO, O.OADate, O.PONO, O.PODATE,
        SO.POLI, SO.ID, SO.MOULDCODE, SO.DESCRIPTION,
        SO.Drg, SO.Rev, M.METALNAME,
        SO.QTY, U.UNITName, SO.DELIVERYDT 
    FROM
        OADetails AS O 
    LEFT OUTER JOIN 
        CustomerDetails AS C ON O.PCODE = C.PCODE 
    LEFT OUTER JOIN 
        SubOADetail AS SO ON O.OANO = SO.OANO 
    LEFT OUTER JOIN 
        MetalDetails AS M ON SO.METALCODE = M.METALCODE 
    LEFT OUTER JOIN 
        UNITMaster AS U ON SO.UNIT = U.UNITID 
    WHERE
        C.CUSTCODE = @CustCode 
        AND O.Status = @Status 
        AND o.OADATE BETWEEN @Sdate AND @Edate
END

Вот мой контроллер

[HttpPost]
public ActionResult GetOADetailByCustomer(string custcode, int status, string yr)
{
        var CST = new SqlParameter
        {
            ParameterName = "CUSTCODE",
            Value = custcode
        };

        var ST = new SqlParameter
        {
            ParameterName = "Status",
            Value = status
        };

        var yearval = Db.Years.Where(x => x.YEAR1 == yr).FirstOrDefault();

        var courseList = Db.Database.SqlQuery<OADetail>("exec sp_OADetails_Get @CustCode, @Status, @Sdate, @Edate",
            new SqlParameter("@CustCode", CST),
            new SqlParameter("@Status", ST),
            new SqlParameter("@Sdate", yearval.SDATE),
            new SqlParameter("@Edate", yearval.EDATE)).FirstOrDefault<OADetail>();
        return View();
}

Кто-нибудь может мне помочь?

Заранее спасибо ..

...