Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架,日期添加-选择后操作日期_C#_Sql_Entity Framework - Fatal编程技术网

C# 实体框架,日期添加-选择后操作日期

C# 实体框架,日期添加-选择后操作日期,c#,sql,entity-framework,C#,Sql,Entity Framework,在保持通配符选择的灵活性的同时,是否可以操纵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,

在保持通配符选择的灵活性的同时,是否可以操纵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);

您可以创建一个包含原始实体和所需任何附加属性的类,然后创建一个从实体投影到新类的转换方法。它不像您所期望的那样灵活,但您可以这样做:


自定义类

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 = context.Titles.ToList();
foreach(var title in items) StartTime = StartTime.AddMinutes(30); 

绝对不是。“ToList()”将导致执行查询并在之后进行属性更新。这种简单的大规模操作最好放在SQL Server上。事实上,这就是我正在做的:)但它仍然不能回答问题(希望我问得对)。我特别不希望必须选择“.Select(n=>new…””。关键是我希望查询本身是灵活的。如果我添加了一个列(和poco类属性),我不想通过整个DAL来更改“.Select”(n=>new'语句。@Michael'mital'Pedersen-您能举例说明为什么要直接修改实体属性,而不是通过分部类添加属性吗?这都是性能问题。比如说“StartTime”是UTC,我希望显示100000条记录,其中日期时间转换为不同的时区。在这种情况下,我希望SQL Server添加120分钟(示例)在返回结果之前启动时间。这应该比调用部分类中的属性100000次要好得多。@Michael'mital'Pedersen,创建一个包含实体和任何附加属性的类怎么样?这样,您就不必担心实体上的任何属性发生更改,但您仍然可以执行caL sql server上的计算对于任何其他属性,请查看更新的回答。我也考虑过这一点。我没有这样做的唯一原因是,它将在实体中引入第二个“层”,这是我试图避免的。然而,对于此应用程序,性能比可维护性更重要(:-/),所以我不得不把我对DAL代码逻辑异常的厌恶放在一边,按照你的建议去做。我接受这个答案。谢谢:-)
var items = context.Titles.ToList();
foreach(var title in items) StartTime = StartTime.AddMinutes(30);