ASP.NET MVC: как запустить хранимую процедуру, используя синтаксис LINQ?

#asp.net-mvc #linq #lambda

#asp.net-mvc #linq #лямбда

Вопрос:

введите описание изображения здесьЯ пытаюсь использовать Linq to Sql для выполнения хранимой процедуры. До сегодняшнего дня я использовал следующий синтаксис, но с сегодняшнего дня он начал выдавать мне ошибку во всем приложении. Я получаю следующее исключение.

 System.InvalidOperationException: 'The cast to value type 'System.Boolean' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.' 
 

Код, который я использовал

 return db.Database.SqlQuery<SchViewModel>("TaskList.TaskListSchedule").ToList();
 
 //View Model
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace TaskList.Models
{
    public class SchViewModel
    {
        public int TaskListItemID { get; set; }
        public Nullable<int> ReportID { get; set; }
        public Nullable<int> MemberID { get; set; }
        public string ReportName { get; set; }
        public string FrequencyType { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public Nullable<System.DateTime> DueDate { get; set; }
        public string Deadline { get; set; }
        public Nullable<int> Duration { get; set; }
        public string Day { get; set; }
        public string Name { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public Nullable<System.DateTime> CompletedDate { get; set; }
        public bool Missed { get; set; }
        public string OnTime { get; set; }
        public string Comments { get; set; }
    }
}
 

Комментарии:

1. Это зависит от используемой вами технологии доступа к базе данных и не связано с Asp.Net MVC.

2. До сегодняшнего дня я использовал следующий синтаксис, но с сегодняшнего дня он начал выдавать мне эту ошибку по всему приложению со следующим сообщением. Система. Исключение InvalidOperationException: система приведения к типу значения. Ошибка Boolean’ не удалась, поскольку материализованное значение равно null. Либо общий параметр типа результата, либо запрос должны использовать тип с нулевым значением.’Код, который я использовал — return db.Database . SqlQuery<SchViewModel>(«TaskList.TaskListSchedule»). ToList(); — Я думал, что неправильно использую синтаксис

3. Есть предложения, почему я внезапно получаю эту ошибку? или исправление, пожалуйста?

4. @Ven пожалуйста, опубликуйте SchViewModel определение и некоторые примеры данных, которые он пытается назначить.

5. Сегодня в базу данных поступила первая запись со null значением for Missed . Я думаю, что кто-то это пропустил…

Ответ №1:

Вам нужно проверить логическое значение в хранимой процедуре, если логическое значение равно null, тогда вам нужно использовать следующее условие в SQL.

ISNULL(поле, 0)

таким образом, он будет преобразован в логический тип.