Столбец логического всегда возвращает false в запросе SQL - PullRequest
0 голосов
/ 16 января 2019

net mvc core 2.2 и Mssql. Я написал хранимую процедуру, которая работает нормально. Результат:

Result of stored procedure in sql server

Однако, когда я запускаю свое приложение, все столбцы stockPermit возвращают false.

Контроллер

if (!String.IsNullOrEmpty(searchString))
{
    searchString = Methods.RemoveTurkish(searchString);
    bayiVM.JoinedTable = await _adb.CariUserJoin.FromSql("EXECUTE CariListeAra {0}", searchString).ToListAsync();
}
else
{
    bayiVM.JoinedTable = await _adb.CariUserJoin.FromSql("EXECUTE CariListeGetir").ToListAsync();
}

var count = bayiVM.JoinedTable.Count;
bayiVM.JoinedTable = bayiVM.JoinedTable.Skip((productPage - 1) * PageSize).Take(PageSize).ToList();

bayiVM.PagingInfo = new PagingInfo
{
    CurrentPage = productPage,
    ItemsPerPage = PageSize,
    TotalItems = count,
    urlParam = param.ToString()
};

return View(bayiVM);

Результат отладки:

Debug screenshot

Что может вызвать эту проблему. Я ценю любую помощь. Спасибо.

Хранимая процедура1

ALTER PROCEDURE [dbo].[CariListeGetir]
AS
BEGIN

    SELECT [CARI_KOD], [CARI_ISIM], [LockoutEnd],[PlaKodu], [StockPermit] FROM YESLAS2018.dbo.TBLCASABIT
    left join b2byeslasDb.dbo.AspNetUsers on TBLCASABIT.CARI_KOD=AspNetUsers.UserName
END

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

ALTER PROCEDURE [dbo].[CariListeAra] (@ad nvarchar(15))
AS
BEGIN

    SELECT [CARI_KOD], [CARI_ISIM], [LockoutEnd],[PlaKodu], [StockPermit] FROM YESLAS2018.dbo.TBLCASABIT
    left join b2byeslasDb.dbo.AspNetUsers on TBLCASABIT.CARI_KOD=AspNetUsers.UserName
    where CARI_KOD like '%'+@ad+'%' or CARI_ISIM like '%'+@ad+'%'

END

Мой вид модели

public class BayiVewModel
    {
        public List<CariUserJoin> JoinedTable { get; set; }
        public PagingInfo PagingInfo { get; set; }
    }

CariUserJoin:

public class CariUserJoin
    {
        [Key]
        public string CARI_KOD { get; set; }
        public string CARI_ISIM { get; set; }
        public DateTimeOffset? LockoutEnd { get; set; }
        public string PlaKodu { get; set; }
        public bool StockPermit { get;set}

    }

PS: я использовал LEFT JOIN. Я имею в виду, что левая таблица имеет 4500 строк, а правая таблица имеет 30.

1 Ответ

0 голосов
/ 16 января 2019

Пожалуйста, используйте:

public bool? StockPermit { get; set; }

set; необходимо для того, чтобы свойство действительно могло быть установлено. ? необходимо, чтобы сделать его обнуляемым.

...