📜  Entity Framework-关系(1)

📅  最后修改于: 2023-12-03 15:00:36.432000             🧑  作者: Mango

Entity Framework-关系

Entity Framework(EF)是一个面向对象的关系映射(ORM)框架,它可以将.NET应用程序中的关系数据映射到.NET对象模型中,并支持在应用程序中对这些数据进行管理。

什么是关系?

关系指的是实体之间的联系。在关系数据库中,实体可以表示为表中的行,关系则表示为表之间的连接。

在 EF 中,关系有三种类型:

  1. 一对一 (One-to-one)
  2. 一对多 (One-to-many)
  3. 多对多 (Many-to-many)
一对一关系

一对一关系是指在两个实体之间只存在一个关系的情况。例如,一个人只有一个身份证号码,一个身份证号码也只对应一个人。

在 EF 中,可以通过在实体上使用 [ForeignKey] 特性来定义一对一关系的外键实体属性。例如,以下代码定义了一个名为 "Person" 的实体和一个名为 "Identification" 的实体,并将 "Identification" 实体作为 "Person" 实体的外键属性:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    [ForeignKey("Identification")]
    public int IdentificationId { get; set; }
    public Identification Identification { get; set; }
}

public class Identification
{
    public int Id { get; set; }
    public string Number { get; set; }
}
一对多关系

一对多关系是指一个实体可以与另一个实体建立多个关系,但每个关系只能与其中一个实体建立连接。例如,一个客户可以有多个订单,但每个订单只能对应一个客户。

在 EF 中,可以在实体上使用 [ForeignKey] 特性来定义一对多关系的外键实体属性,并在另一个实体上使用集合属性来表示多个关系。例如,以下代码定义了一个名为 "Customer" 的实体和一个名为 "Order" 的实体,并使用 "CustomerId" 外键属性将它们连接起来:

public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Order> Orders { get; set; }
}

public class Order
{
    public int Id { get; set; }
    public string Product { get; set; }
    [ForeignKey("Customer")]
    public int CustomerId { get; set; }
    public Customer Customer { get; set; }
}
多对多关系

多对多关系是指多个实体之间可以建立多个关系。例如,一个学生可以选修多个课程,一个课程也可以被多个学生选修。

在 EF 中,可以使用中间实体来表示多对多关系的连接。中间实体通常具有两个外键属性,分别用于连接两个实体。例如,以下代码定义了一个名为 "Student" 的实体、一个名为 "Course" 的实体和一个名为 "Enrollment" 的中间实体,并使用 "StudentId" 和 "CourseId" 外键属性将它们连接起来:

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Enrollment> Enrollments { get; set; }
}

public class Course
{
    public int Id { get; set; }
    public string Title { get; set; }
    public ICollection<Enrollment> Enrollments { get; set; }
}

public class Enrollment
{
    public int Id { get; set; }
    public int StudentId { get; set; }
    public Student Student { get; set; }
    public int CourseId { get; set; }
    public Course Course { get; set; }
}
总结

在 EF 中,关系用于表示实体之间的联系。通过使用一对一、一对多和多对多关系,可以在 .NET 对象模型中建立数据库的关系。使用 [ForeignKey] 特性可以用于定义关系的外键属性,并使用集合属性或中间实体来表示多个关系。