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。
这个问题纯粹是概念性的! 下面的代码工作正常,但我不知道如何. . .
场景
我已经开始阅读 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。