gpt4 book ai didi

c# - Entity Framework 部分加载

转载 作者:太空狗 更新时间:2023-10-30 00:54:29 24 4
gpt4 key购买 nike

我的表中有以下列

  • ID(整数)
  • 名称 (nvarchar) 通常 < 100 个字符
  • 数据 (nvarchar) 平均 1MB

我正在编写一个程序,它将遍历每一行并对名称字段执行一些操作。由于我只使用 Name 字段并且 Data 字段非常大,是否可以指示 EF 仅加载 Id 和 Name 字段?

最佳答案

当然是

ctx.YourDbSet.Select(p=> new { Id = p.Id, Name = p.Name});

此方法正在选择一个匿名类。

如果你想再次保存它,你可以用我称之为虚拟实体的东西来做到这一点:

foreach(var thing in ctx.YourDbSet.Select(p=> new { Id = p.Id, Name = p.Name}))
{
var dummy = new YourEntity{Id = thing.Id};
ctx.YourDbSet.Attach(dummy);
dummy.Name = thing.Name + "_";
}
ctx.SaveChanges();

此方法与快照跟踪一起使用,因为 EF 仅跟踪附加调用后所做的更改以在更新语句中发回。这意味着您的查询将只包含对该实体的名称属性的更新(即它不会触及数据)

注意:您要确保在您严格控制的上下文中执行此操作,因为您无法附加已附加到 EF 跟踪图的对象。在上述情况下,选择将将实体作为其匿名附加到图形(因此您可以安全地使用相同的上下文)

关于c# - Entity Framework 部分加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12668469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com