注意:本文描述的是一对一的从属实体(一对多也差不多,只是略有差别,具体可参见MSDN中的EFCORE6.0的文章),也就是一行对应一行。
概念
- 普通从属实体
就是多个实体类型映射1个数据库表,每个实体包含不同的字段属性。
例如:一张表不重要的字段太多,并不是每次查询都需要那么多字段,如果按照常规一个实体类映射一张表,那么每次都要处理那么多字段太麻烦,所以干脆分成两个实体,一个实体包含重要字段,另一个实体包含其他字段作为从属实体即可。 - 映射独立数据表的从属实体
从属实体也可以单独映射另一张数据库表 ,这种场景也是较常见的,
例如:已经在使用的数据库表,你只是想要自定义增加一些扩展字段,而且不便在原表上增加字段。这时候就需要新增一张新表,那么这个新增表就可以作为从属实体进行映射。
普通从属实体(与主实体映射同一张数据表)
做法很简单,例如如下数据库表:
表名:Person
id | name | age | sex | createTime | updateTime |
---|---|---|---|---|---|
1 | 张三 | 20 | 男 | 2020-01-01 | 2022-01-02 |
2 | 李四 | 21 | 男 | 2018-12-22 | 2022-04-02 |
3 | 韩梅梅 | 23 | 女 | 2021-03-11 | 2021-03-12 |
4 | lucy | 24 | 女 | 2019-03-15 | 2022-11-22 |
5 | lily | 24 | 女 | 2021-11-6 | 2022-03-26 |
假设,灰色部分createTime、updateTime俩字段为不常用字段,那么可以分成两个实体进行映射。
主实体类代
码:
public class Person
{
public int ID {
get; set; }
public string? name {
get; set; }
public int age {
get; set; }
public string? sex {
get; set; }
//新建一个导航属性,类型名即是【从属实体类名】,本例为:PersonOthers
public PersonOthers personOthers1 {
get; set; }
}
从属实体类
代码: