通过一个大学课程案例讲解了复杂实体的创建过程及讲解

1.ASP.NET Core 和 Entity Framework Core 系列教程——入门 (1 / 10)

2.ASP.NET Core 和 EF Core系列教程——CRUD (2 / 10)

3.ASP.NET Core 和 EF Core 系列教程——排序、筛选、分页和分组

4.ASP.NET Core 和 EF Core 系列教程——迁移

基于core 2.0,作者只翻译了四篇,剩下的要去官网看机翻的了。

官网地址:https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-mvc/complex-data-model?view=aspnetcore-2.0

 

 

 

Student实体讲解
using System;
using System.Collections.Generic;

namespace ContosoUniversity.Models
{
    public class Student
    {
        public int ID { get; set; }
        public string LastName { get; set; }
        public string FirstMidName { get; set; }
        public DateTime EnrollmentDate { get; set; }

        public ICollection<Enrollment> Enrollments { get; set; }
    }
}

ID属性将成为对应于此类的数据库表中的主键。 默认情况下,EF 将会将名为ID或classnameID的属性解析为主键。

Enrollments属性是导航属性。 导航属性中包含与此实体相关的其他实体。 在这个案例下,Student entity中的Enrollments属性会保留所有与Student实体相关的Enrollment。 换而言之,如果在数据库中有两行描述同一个学生的修读情况 (两行的 StudentID 值相同,而且 StudentID 作为外键和某位学生的主键值相同),Student实体的Enrollments导航属性将包含那两个Enrollment实体。

如果导航属性可以具有多个实体 (如多对多或一对多关系),那么导航属性的类型必须是可以添加、 删除和更新条目的容器,如ICollection<T>。 你可以指定ICollection<T>或实现该接口类型,如List<T>或HashSet<T>。 如果指定ICollection<T>,EF在默认情况下创建HashSet<T>集合。