Предполагая, что у меня есть сущность:EF6: Материализовать данные, используя пользовательский тип
public class Event
{
...
public DateTime At { get; set; }
}
, а также модель объект:
public class Something
{
...
public Date At { get; set; }
}
где дата является пользовательским типом, который может быть неявно преобразован из DateTime:
public struct Date
{
public Date(DateTime value)
{
...
}
...
public static implicit operator Date(DateTime value)
{
return new Date(value);
}
}
То, что я пытаюсь сделать, это извлечь данные из базы данных в модели:
var events = db.Events
.Select(x => new Something
{
...
At = x.At,
})
.ToList();
И, конечно, это не удается за исключением следующего:
Невозможно бросить тип «System.DateTime» к типу «SMG.Web.Date». LINQ to Entities поддерживает только листинг EDM-примитивов или типов перечислений.
Да, я знаю, что я мог бы достичь того, что мне нужно, с помощью какого-либо временного объекта, материализовать значение DateTime в память и затем преобразовать его в мой пользовательский тип. Но что, если я предпочитаю не использовать эту стратегию и хочу сделать это за один шаг.
Вопрос: Есть ли способ научить LINQ Entities, как относиться к моей пользовательской дате с той стороны реальности?
Do 'ToList()' перед 'Select (...)' – DavidG
Вы действительно его прочитали? – drty
Да, именно поэтому я прокомментировал вместо ответа. – DavidG