#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
значением forMissed
. Я думаю, что кто-то это пропустил…
Ответ №1:
Вам нужно проверить логическое значение в хранимой процедуре, если логическое значение равно null, тогда вам нужно использовать следующее условие в SQL.
ISNULL(поле, 0)
таким образом, он будет преобразован в логический тип.