通过一个大学课程案例讲解了复杂实体的创建过程及讲解
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>集合。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统