Сегодня я решил обновить мой старый веб-проект с ядра 1.1 Asp.net до 2.1, и все шло довольно гладко, пока я не попытался получить список LocalEvent из БД.Я использовал .AsNotracking, так как мне не нужно было вносить какие-либо изменения в объекты, кроме сортировки / фильтрации.
Это ошибка:
Выражение типа 'System.DateTime' нельзя использовать для присвоения типу 'System.Nullable`1 [System.DateTime]'
Это код, с которым у меня возникают проблемы:
var today = DateTime.Now;
var events = await _context.LocalEvent.Where
(x => x.ReoccurUntil > today || x.EventEnd > today).AsNoTracking().ToListAsync();
Это модель LocalEvent:
public class LocalEvent
{
[NotMapped]
private DateTime? dateCreated;
[Key]
public Guid Id { get; set; }
[MaxLength(200)]
[Display(Name = "Event Location")]
[DataType(DataType.MultilineText)]
public string Location { get; set; }
[Display(Name = "Added By")]
public string Author { get; set; }
[Display(Name = "Contact")]
public string EventContact { get; set; }
[Display(Name = "Event Name")]
public string EventName { get; set; }
[DataType(DataType.MultilineText)]
[Display(Name = "Details")]
public string EventInfo { get; set; }
[DataType(DataType.Currency)]
[DisplayFormat(DataFormatString = "{0:C0}", ApplyFormatInEditMode = true)]
[Display(Name = "Cost")]
public Decimal? EventCost { get; set; }
//DateStuff
[Display(Name = "Date Created")]
public DateTime DateCreated
{
get { return dateCreated ?? DateTime.Now; }
set { dateCreated = value; }
}
[Display(Name = "Event Start")]
public DateTime EventStart { get; set; }
[DateGreaterThan("EventStart")]
[Display(Name = "Event End")]
public DateTime EventEnd { get; set; }
public DateTime ReoccurUntil { get; set; }
[Display(Name = "Reoccurrence Type")]
public TypeOfOccurrence OccurrenceType { get; set; }
[Display(Name = "Which Occurence of Weekday")]
public Nth NthReOccurence { get; set; }
[Display(Name = "Weekday for Reoccurence")]
public DayOfWeek ReoccurrenceDay { get; set; }
[Display(Name = "Occurrence Rate")]
public OccurrenceRate Occurrence { get; set; }
public bool DoesReoccur { get; set; }
[DataType(DataType.ImageUrl)]
public string Image { get; set; }
public string ImageDeletePath { get; set; }
public string Slug { get; set; }
}
Пока я просто удалил AsNoTracking, чтобы получить вещиснова работаетЯ делаю что-то неправильно?
Ошибка действительно странная, потому что в ней упоминаются даты и поэтому потребовалось некоторое время, чтобы отследить до AsNoTracking, я удалил все, что связано с датами, сначала просто удалил даты, которые можно обнулять, затем я реализовал аналогичный вызов для администратораlist (полный отслеживаемый список) работал только с тем отличием, что AsNoTracking, и именно тогда (после тестирования) я решил спросить здесь.
Я думал, что если у меня нет намерения изменять, удалять и т. Д., Мне следует избегать отслеживания для повышения производительности!?
Надеюсь, кто-то может пролить немного света на эту проблему!Заранее спасибо!