Неверный синтаксис в хранимой процедуре в веб-API с возвращаемым объектом - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть хранимая процедура, которая выдает объект. Поэтому я создал класс, который может поймать все это:

public class OwnerInfo
{
        public string UnitName { get; set; }
        public string UnitOwner { get; set; }
}

public class FirstInfo
{
        public string TType { get; set; }
        public string TransactionType { get; set; }
        public string Period_Covered { get; set; }
        public double? BillAmount { get; set; }
        public double? PaymentAmount { get; set; }
        public double? Balance { get; set; }
}

public class SecondInfo
{
        public string TType { get; set; }
        public string TransactionType { get; set; }
        public string Period { get; set; }
        public double? BillAmount { get; set; }
        public double? PaymentAmount { get; set; }
        public double? Balance { get; set; }
}

public class ThirdInfo
{
        public string TType { get; set; }
        public string TransactionType { get; set; }
        public string Period { get; set; }
        public double? PaymentAmount { get; set; }
}

public class FourthInfo
{
        public string TType { get; set; }
        public string Particulars { get; set; }
        public string PaymentDate { get; set; }
        public double? PaymentAmount { get; set; }
        public string ORNumber { get; set; }
}

public class DisplaySoa
{
        public OwnerInfo OwnerInfo { get; set; }
        public List<FirstInfo> FirstInfo { get; set; }
        public List<SecondInfo> SecondInfo { get; set; }
        public List<ThirdInfo> ThirdInfo { get; set; }
        public List<FourthInfo> FourthInfo { get; set; }
}

public class DisplaySoaParameter
{
        public int UnitID { get; set; }
        public int Month { get; set; }
        public int Year { get; set; }
}

Моя хранимая процедура прекрасно работает в SQL Server:

EXEC [dbo].[DISPLAY_SOA_V4]
            @UnitID = 1,
            @Month  = 11,
            @Year   = 2018

и затем я вызываю эту хранимую процедуру следующим образом:

public  DisplaySoa DisplaySoa(DisplaySoaParameter model)
{
    using(var db = new ApplicationDbContext())
    {
         int unitid = Convert.ToInt32(model.UnitID);
         int month = Convert.ToInt32(model.Month);
         int year = Convert.ToInt32(model.Year);

         try
         {
             //const string query = "[dbo].[DUES_AUTO_PAYMENT] @PaymentAmount @PaymentTypeID @ORNumber @UnitID @CurrentDateTime";
             const string query = "[dbo].[DISPLAY_SOA_V4] @UnitID @Month @Year";
             object[] parameter =
                        {
                            new SqlParameter
                            {
                                ParameterName = "@UnitID",
                                Value = unitid,
                                Direction = ParameterDirection.Input,
                                //SqlDbType = SqlDbType.Int
                            },
                            new SqlParameter
                            {
                                ParameterName = "@Month",
                                Value = month,
                                Direction = ParameterDirection.Input,
                               //SqlDbType = SqlDbType.Int
                            },
                            new SqlParameter
                            {
                                ParameterName = "@Year",
                                Value = year,
                                Direction = ParameterDirection.Input,
                                //SqlDbType = SqlDbType.Int
                            }
                        };

             var x = db.Database.SqlQuery<DisplaySoa>(query, parameter).FirstOrDefault();
             return x;
         }
         catch(Exception ed)
         {
             return null;
         }
    }
}

Но я получаю эту ошибку в моем try catch

Неверный синтаксис около '@ Месяца'

Но если я удаляю ".firstOrDefault ()", я получаю эту ошибку:

SqlParameter уже содержится в другой SqlParameterCollection.

Мне очень нужна твоя помощь в этом. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...