以属性实体 VS 作为属性 ID 的表关系

Posted

技术标签:

【中文标题】以属性实体 VS 作为属性 ID 的表关系【英文标题】:Table Relations with as property Entity VS as property ID 【发布时间】:2022-01-11 11:26:48 【问题描述】:

我正在观看“CODE FIRST ENTITY FRAMEWORK CORE”的教程我有 2 个问题;

    我需要使用 [ForeignKey] 属性吗?我应该把它放在哪里,在产品实体中还是在类别实体中(一对一、一对多等都无所谓) 为什么没有 [DefaultValue] 属性? 关于关系,一些教程显示了这种方式
namespace EntityExample

   public class Product
     
      public int ProductId  get; set; 

      public Category Category  get; set; 
   

   public class Category
   
      public int CategoryId  get; set; 
    
      public ICollection<Product> Products  get; set; 
   

但其他人喜欢使用它

namespace EntityExample

   public class Product
     
      public int ProductId  get; set; 

      public int CategoryId  get; set; 
   

   public class Category
   
      public int CategoryId  get; set; 
    
      public ICollection<int> ProductId  get; set; 
   

哪个是正确的?

【问题讨论】:

也许这个文档可以提供帮助:EF Core - Relationships 【参考方案1】:

您好,欢迎来到 Stack Overflow。您的问题非常接近寻求意见,这里是not allowed。

为了帮助你远离意见,我建议你创建一个有两个表和外键的数据库;然后搭建模型。您将看到 Microsoft 的建议。

您展示的示例都不正确(尽管第一个更好)。我很确定没有教程会显示第二个示例 - 但我也进入了意见领域。

【讨论】:

以上是关于以属性实体 VS 作为属性 ID 的表关系的主要内容,如果未能解决你的问题,请参考以下文章

如何确定一个想法是不是应该被视为关系数据库中的表或属性?

ValidationException 异常描述:在关系属性中使用非实体作为目标实体

数据库

将引用作为属性的 Nhibernate 映射值对象

在 JPA 中映射为实体的关系表

使用父 NSManagedObject 上的关系枚举子实体 VS 使用 NSFetchRequest