是否可以在保持通配符选择灵活性的同时操作EF查询中的日期?
在旧式SQL中你可以做到这一点
SELECT ID, Name,
DATEADD (minute, 30, [StartTime]) AS [StartTime]
FROM Titles
我知道你可以在EF中使用
var items = context.Titles.Select(n => new {
ID = n.ID,
Name= n.Name,
StartTime = System.Data.Objects.EntityFunctions.AddMinutes(n.StartTime, 30)
});
我面临的挑战是,我不想指定所有属性。
是否可以执行类似
的操作var items = context.Titles.SomethingSomething(n =>
LinqToUpdateOnly 'StartTime' property);
答案 0 :(得分:0)
您可以创建一个包含原始实体的类以及您想要的任何其他属性,然后创建一个从您的实体投影到新类的转换方法。它没有您想要的那么灵活,但您可以这样做:
自定义类
public class TitlePoco
{
public Title Title { get; set; }
public DateTime StartTime { get; set; }
}
处理您想要的所有翻译的单个点
public IQueryable<TitlePoco> TranslateTitles(IQueryable<Title> query)
{
return query.Select(n => new TitlePoco {
Title = n,
StartTime = System.Data.Objects.EntityFunctions.AddMinutes(n.StartTime, 30)
});
}
然后你就像这样调用你的方法
var items = TranslateTitles(context.Titles.Where(x => ...));
答案 1 :(得分:0)
老学校怎么样?
var items = context.Titles.ToList();
foreach(var title in items) StartTime = StartTime.AddMinutes(30);