C# 批量更新类对象中的属性
我有一个类,它将数据从对象列表批量加载到数据库表中。有时,传递的一个日期字段(ReadingTimeCdt)应该设置为该列表中所有记录的当前时间,因此我有一个参数(布尔值),用于检查是否存在这种情况,以及是否将ReadingTimeCdt设置为当前时间。我使用foreach循环将日期设置为current,但是这些对象可能非常大,性能可能会成为一个问题。有没有一种方法可以简单地将对象中的所有ReadingTimeCdt设置为currentTime而不使用循环 这是我的密码C# 批量更新类对象中的属性,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我有一个类,它将数据从对象列表批量加载到数据库表中。有时,传递的一个日期字段(ReadingTimeCdt)应该设置为该列表中所有记录的当前时间,因此我有一个参数(布尔值),用于检查是否存在这种情况,以及是否将ReadingTimeCdt设置为当前时间。我使用foreach循环将日期设置为current,但是这些对象可能非常大,性能可能会成为一个问题。有没有一种方法可以简单地将对象中的所有ReadingTimeCdt设置为currentTime而不使用循环 这是我的密码 publ
public void InsertBulkLoad(List<Location> rec, bool currentDate)
{
try
{
if(currentDate == true){
foreach (Location vr in rec)
{
DateTime currentTime = DateTime.Now;
vr.ReadingTimeCdt = currentTime;
}
}
using (LiveContext entity = new LiveContext())
{
entity.Location.AddRange(rec);
entity.SaveChanges();
}
}
catch (Exception ex)
{
// Exception code here...
}
}
public void InsertBulkLoad(列表记录,bool currentDate)
{
尝试
{
如果(currentDate==true){
foreach(rec中的位置vr)
{
DateTime currentTime=DateTime.Now;
vr.ReadingTimeCdt=当前时间;
}
}
使用(LiveContext entity=new LiveContext())
{
实体.Location.AddRange(rec);
entity.SaveChanges();
}
}
捕获(例外情况除外)
{
//异常代码在这里。。。
}
}
如果在类中初始化属性,则可以完成此操作。我的意思是,你无论如何都要将其设置为当前时间,并且在保存期间,EF无论如何都必须循环通过所有这些对象
public class Location
{
.....
public DateTime ReadingTimeCdt { get; set; } = DateTime.Now;
}
性能可能成为一个问题
您是否100%确定问题
位于代码的foreach
循环部分内?另外,您可以做的一件事是移动DateTime currentTime=DateTime.Now代码>在循环外,这将为您获得一些性能是的,如果我删除循环,性能很好。这个类处理数千行数据,所以我并不奇怪循环会减慢速度。谢谢。我昨天试过了,但还是不断出错,但我还是继续尝试了一次,结果成功了。我不确定我昨天做错了什么,但这是我现在要采用的解决方案。非常感谢。