我有一个Show表,我希望有一个名为ActiveShow的派生类型,它只返回将来的节目
Show.ShowDateTime > DateTime.Now
有没有办法可以使用设计器或其他方式实现这一点,以便创建ActiveShow的实例始终遵循日期条件?
答案 0 :(得分:1)
绝对可以使用SSDL中的DefiningQuery(实际上是TSQL视图)来做到这一点。
但我不推荐它。
问题是类型成员资格是暂时的,它应该是永久性的,或者至少要求你明确地改变它。
即。你最终可能会遇到某种情况,即ActiveShow(并在内存中加载),但如果你进行后续查询,你可能会尝试加载与Show相同的对象。在这种情况下,身份解析会发生什么,这是任何人的猜测。
这很可能会产生一些非常令人讨厌的意外副作用。
作为替代方案,您的上下文中的额外属性可能会添加到分部类中:
即。
public partial class MyContext
{
public ObjectQuery<Show> ActiveShows
{
get{
return this.Shows.Where(s => ShowDateTime > DateTime.Now)
as ObjectQuery<Show>;
}
}
}
这可能会给你带来大部分好处而没有大部分风险。
希望这有帮助
亚历