【发布时间】:2018-01-24 21:55:34
【问题描述】:
假设我有一个实体:
public class Event
{
...
public DateTime At { get; set; }
}
还有一个模型对象:
public class Something
{
...
public Date At { get; set; }
}
其中 Date 是可以从 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 to Entities 如何在现实的那一侧处理我的自定义日期?
【问题讨论】:
-
在
Select(...)之前做ToList() -
你真的读了吗?
-
是的,这就是我评论而不是回答的原因。
-
是的,使用 ToList() 强制数据实现并在此之后将其转换为自定义类型 - 会有所帮助 - 我知道。但问题不在于“简单的方法”。我想知道是否可以使用我的类型而不是原语来做到这一点。
标签: entity-framework linq