В моем веб-приложении MVC у меня есть класс модели, который взаимодействует с представлением базы данных SQL, которое хранится в моей базе данных SQL Azure.Модель выглядит следующим образом:
namespace GanttTest.Models
{
[Table("GanttTest")]
public class Task
{
public int Id { get; set; }
public string Text { get; set; }
public DateTime? StartDate { get; set; }
public int? Duration { get; set; }
public DateTime? EndDate { get; set; }
public DateTime? OptionsEnd { get; set; }
public DateTime? OptionsStart { get; set; }
public bool Unscheduled { get; set; }
}
}
В верхней части модели указана таблица, представляющая собой представление SQL, которое я создал.
Поскольку эта модель обслуживает диаграмму Ганта, у меня естьМесто для данных:
namespace GanttTest.Models
{
public class TaskDto
{
public int id { get; set; }
public string text { get; set; }
public string start_date { get; set; }
public int? duration { get; set; }
public decimal progress { get; set; }
public int? parent { get; set; }
public string options_start { get; set; }
public string options_end { get; set; }
public string type { get; set; }
public bool unscheduled { get; set;}
public bool open
{
get { return true; }
set { }
}
public static explicit operator TaskDto(Task task)
{
return new TaskDto
{
id = task.Id,
text = task.Text,
start_date = task.StartDate?.ToString("yyyy-MM-dd HH:mm") ?? "",
options_start = task.OptionsStart?.ToString("yyyy-MM-dd HH:mm") ?? "", /*Allows toString to be used on nullable types*/
options_end = task.OptionsEnd?.ToString("yyyy-MM-dd HH:mm") ?? "",
duration = task.Duration,
unscheduled = task.Unscheduled
};
}
public static explicit operator Task(TaskDto task)
{
return new Task
{
Id = task.id,
Text = task.text,
StartDate = DateTime.Parse(task.start_date, System.Globalization.CultureInfo.InvariantCulture),
OptionsStart = DateTime.Parse(task.start_date, System.Globalization.CultureInfo.InvariantCulture),
OptionsEnd = DateTime.Parse(task.start_date, System.Globalization.CultureInfo.InvariantCulture),
Duration = task.duration,
Unscheduled = task.unscheduled
};
}
}
}
Метод сбора данных, который использует WebAPI, выглядит следующим образом:
public IEnumerable<TaskDto> Get()
{
var task = db.Tasks.ToList().Select(t => (TaskDto)t);
return task;
}
Представление имеет CASE
, определенное для установкиусловное значение столбца с именем Unscheduled
, которое вы можете увидеть в модели выше.Это логическое значение, поэтому оно может быть истинным или ложным.
(CASE WHEN Onhire IS NULL THEN 1 ELSE 0 END) AS Unscheduled
Проблема, с которой я столкнулся, заключается в том, что при запуске приложения и сборе данных возникает ошибка:
System.InvalidOperationException: «Свойство« Не запланировано »в« Задаче »не может быть установлено в значение« System.Int32 ».Вы должны установить для этого свойства ненулевое значение типа System.Boolean.'
Я пытался установить значение разными способами, от чисел, которые вы видите выше, до слов true
и false
, но ошибка меняется для каждого типа данных, который я пытаюсь, и, похоже, ничего не работает.
Есть ли способ определить логические значения, которые я не использую?Я немного смущен.Документация по теме показывает использование 0 и 1.