gpt4 book ai didi

c# - Linq 到 SQL : Updating an aggregate root

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:07 25 4
gpt4 key购买 nike

我有一个对象,其嵌套部分存在于三个表中。这些类是具有 IList<> 关系的 POCO。与任何框架无关。

A_object-> B_object[N]-> C_object[N]

我将此对象发送到存储库进行更新。存储库使用 Linq to SQL 保存内容。

myRepo.Update(A_object);

处理更新和删除的第一个循环:

foreach (var B in A.B_records) 
{ foreach (var C in B.C_records)
{
if( C is in our parameter object)
// update the database object
else
// not found, delete the database object
}

if( B is in our parameter object)
// update the database object
else
// not found, delete the database object
}

如果在我们的参数对象中找到,则循环更新数据库记录,如果在我们的参数对象中找不到,则删除数据库记录。因此更新和删除工作正常。

鉴于我无法修改参数对象的类,**是否可以实现某种模式或机制来插入缺失的 B 和 C 对象而无需再次重新查询数据库?

显然,我可以为找到的 B 和 C 主键创建一个数组,然后在插入循环中跳过它们,但我是否缺少更好的方法?

最佳答案

我工作的地方有类似的模式。通常我们做以下两件事之一:

  1. 将之前不在数据库中的对象的“IsNew”字段设置为“true”,或者
  2. 将对象的 ID 设置为某个无效数字作为“这是一个新项目”标志。

关于c# - Linq 到 SQL : Updating an aggregate root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346395/

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