Entity Framework 概念澄清

Entity Framework Conceptual Clarification

这个问题纯粹是概念性的! 下面的代码工作正常,但我不知道如何. . .


场景

我已经开始阅读 Entity Framework 概念,目前我正在使用位于 here 的信息和示例来构建我的第一个 MVC 项目。这是 link:

中的代码示例
    Imports System.Collections.Generic
    Imports System.Data.Entity

    Namespace MyDataAccessDemo

        Module Program

            Sub Main()

                Using context As New ProductContext()

                    Dim food As New Category With {.CategoryId = "FOOD"}
                    context.Categories.Add(food)

                    Dim cheese As New Product With {.Name = "Cheese"}
                    cheese.Category = context.Categories.Find("FOOD") 

                    context.Products.Add(cheese)
                    context.SaveChanges()
                End Using

            End Sub

        End Module

        Public Class ProductContext : Inherits DbContext

            Public Property Products As DbSet(Of Product)
            Public Property Categories As DbSet(Of Category)

        End Class


        Public Class Product

            Public Property ProductId As Integer
            Public Property Name As String
            Public Property Category As Category ' <-- Circular reference?

        End Class

        Public Class Category

            Public Property CategoryId As String
            Public Property Name As String
            Public Property Products As ICollection(Of Product) ' <-- Circular reference?

        End Class
    End Namespace

问题

因此,"Category" 是 class,"Product" 是 class。 类别 包含其 产品 的集合,每个 产品 包含其 类别,其中包含其 产品 的集合,每个 产品 包含其 类别,其中包含 products 的集合。 . .好吧,你明白了。


问题

为什么这行得通?这不应该导致某种循环引用吗?我认为该类别将包含产品 ID,反之亦然,而不是对象本身。

这些称为导航属性,您可以在 Entity framework 网站上找到更多信息 here