在class设计中应该如何正确使用属性类型

How should property types be used correctly in class design

有两个 classes - 例如商店和产品

public class Shop
{
public int ShopId {get;set;}
public string ShopName {get;set;}
public ICollection Products {get;set;}
}

public class Product
{
public int ProductId {get;set;}
public string ProductName {get;set;}
public Shop Shop {get;set;}
}

在产品 class 的上述代码中,何时以及为何(如果我们应该)使用

public Shop Shop {get;set;}

而不是

public int ShopId {get;set;}

反之亦然?

后者是用于DTO,另一个映射到数据库吗?

所以我真的很困惑为什么以及什么时候应该使用哪个。我希望有人为我澄清这一点。

这归结为你如何使用这种关系的目的。如果您只想存储数据(保存到数据库,序列化为 JSON),那么您应该使用 ShopId。如果你要在某些业务逻辑中使用商店,你应该选择商店,因为你不想每次都一次又一次地加载父商店。