gpt4 book ai didi

entity-framework - 从集合域驱动设计中删除对象

转载 作者:行者123 更新时间:2023-12-04 07:21:57 24 4
gpt4 key购买 nike

在我们的项目中,我们遵循具有 Entity Framework 的领域驱动设计。最近我遇到了一个问题,我想从集合中删除一个对象。假设客户有购买的集合。我想删除一位客户的特定购买。

 public class Customer
{
public int ID { get; set; }

public string Name { get; set; }

public string Address { get; set; }

public virtual ICollection<Purchase> Purchases { get; set; }
}

public class Purchase
{
public int ID { get; set; }

public int CustomerId { get; set; }

public DateTime PurchaseDate { get; set; }
}

我试图通过以下方式删除购买
customer.Purchases.Remove(purchase);

但上面的代码只删除了关系,而不是从 db 删除购买。我想从数据库中删除它们。

因此,为了完成这项工作,我已将责任交给 Repository,并在存储库中使用上下文对象来删除购买。
repository.DeletePurchase(purchase);

以上是领域驱动设计中的正确方法还是在实体内移动删除行为的任何可能性?

请帮助我遵循实现 DDD 的最佳实践。

最佳答案

在这里回答的问题是我不知道您正在执行什么行为。 “取消对客户的购买”……更重要的问题是为什么以及何时允许/适当。即便如此,购买在某种程度上也是一种交易,删除它们有什么意义(假装它们没有发生,在此过程中丢失历史记录)。你的设计也有问题。如果我一年中的每一天都买东西怎么办?当我们从现在开始快进一年时,我需要加载多少次购买才能删除该单次购买?如何将购买建模为单独的聚合并只复制它所针对的客户的 ID?我们总是可以仅使用该客户 ID 的谓词来找出客户的所有购买情况。这在您的上下文中有意义吗?

人们一次又一次地忘记制定他们试图模拟的实际行为,为 future 的读者添加适当的上下文只是一个遥远的梦想。熟悉您的领域和模型不是可选的。

关于entity-framework - 从集合域驱动设计中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22987309/

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