.net linq更新datetime的多个记录的时间部分

摩根船长

我的数据库中有一个预订表,其中一列是booking_date_time。如何更新多个记录的时间部分?例如,如果我有5条记录具有不同的日期,我想保留这些日期,但是将时间设置为上午10点。下面是我正在使用的代码,但这将为所有对象设置相同的日期。我希望避免检索对象列表并遍历它们并一次更新一个

booking bookingToUpdate = db.bookings.Where(a => a.booking_recurrence_id == bk.booking_recurrence_id).SingleOrDefault();
bookingToUpdate.booking_date_time = bk.booking_date_time;
db.Entry(bookingToUpdate).State = System.Data.Entity.EntityState.Modified;
retVal = db.SaveChanges() > 0;

输入的数据是一个预订记录(bk)。它包含唯一的booking_id。它还包含一个booking_recurrence_id,它将多个预订链接在一起。

说我有以下几点:

booking_id:1 booking_recurrence_id:1 booking_date_time:1/1/2016 08:00

booking_id:2 booking_recurrence_id:1 booking_date_time:2/1/2016 08:00

booking_id:3 booking_recurrence_id:1 booking_date_time:3/1/2016 08:00

我想将时间更新为09:00,所以我的预期结果应该是

booking_id:1 booking_recurrence_id:1 booking_date_time:1/1/2016 09:00

booking_id:2 booking_recurrence_id:1 booking_date_time:2/1/2016 09:00

booking_id:3 booking_recurrence_id:1 booking_date_time:3/1/2016 09:00

吉恩·麦基(Zein Makki)

使用EF(或任何其他ORM)进行更新的方法是检索对象,对其进行更新,然后提交更改。

有多个扩展名可以进行批处理更新,但由于您需要根据每一行的值进行更新,而不是进行更新,因此可以将所有行都更新为某个恒定值,这可能不适用于您的情况。

但是,您要进行一次提交,也可以根据自己的情况进行1选择。但是,这将基于对象的数量生成许多更新语句。

  1. 选择您要更新的所有后退(1次往返)
  2. 在对象列表上本地循环。(无行程访问数据库)
  3. 更新每个对象。(无行程访问数据库)
  4. 提交更改(1次往返,生成了多个更新语句)

我认为您无法生成单个Linq To SQL语句来执行此操作。但是您可以使用传统的T-SQL查询。

List<int> ids = new List<int>(); // your ids here. 

string commaDelimitedIds = String.Join("," ids);
string query = "UPDATE booking "
 + "SET booking_date_time = DATEADD(HOUR, 10, CONVERT(DATETIME2(7), CONVERT(DATE, booking_date_time))) "
+ "WHERE booking_recurrence_id IN (" + commaDelimitedIds + ")";

db.Database.SqlQuery(query);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从.Net更新Salesforce记录

来自分类Dev

ADO .Net RESTful部分更新

来自分类Dev

如何在asp.net mvc中使用Linq从数据库中删除多个记录

来自分类Dev

在ASP.NET MVC中一次更新多个记录

来自分类Dev

.Net DateTime与本地时间和DST

来自分类Dev

在 linq 查询中忽略 DateTime 的时间部分

来自分类Dev

VB.NET更新.accdb记录

来自分类Dev

更新ASP .Net MVC中的记录

来自分类Dev

更新ASP .Net MVC中的记录

来自分类Dev

使用LinQ在C#.NET中将字符串中的一部分stringdate与datetime进行比较

来自分类Dev

.net XmlSerializer记录与元素

来自分类Dev

如何从LINQ获取过滤的记录-VB.net

来自分类Dev

获取 DateTime 的日期部分(ASP.NET MVC)

来自分类Dev

在VB.NET中将日期和时间联接到DateTime

来自分类Dev

Android(Java)和.NET DateTime之间的高精度时间同步?

来自分类Dev

从.Net System.DateTime生成Google Protobuf时间戳

来自分类Dev

.NET System.DateTime.ToLocalTime() 返回无效的本地时间值

来自分类Dev

ASP.Net-Linq中的DateTime问题-VB

来自分类Dev

使用ADO.NET SqlDataAdapter更新单个记录

来自分类Dev

实体框架:更新记录,包括在Net Core 3中

来自分类Dev

如何在Azure移动服务ScheduledJob(.NET)中更新记录?

来自分类Dev

更新记录时ASP.NET排除属性-Entity Framework

来自分类Dev

VB.NET:在Ms Access中更新记录

来自分类Dev

Rethinkdb .net更新值

来自分类Dev

更新.Net Windows服务

来自分类Dev

更新.NET Core工具

来自分类Dev

使用Ajax的Asp.Net MVC部分视图更新

来自分类Dev

带有ASP.NET Updatepanel的AngularJS部分更新

来自分类Dev

ASP.NET MVC AjaxForm无法正确更新部分视图