EF Core学习笔记:一对多关系配置

85 篇文章 0 订阅
35 篇文章 0 订阅

最近迁移项目。发现有表结构是一对多关系。定位申请单对应多个制模。自己对这种关系不够熟悉,不敢乱改。现在补一下基础。

数据库表之间的关系:一对一、一对多、多对多(需要一张第三方表来记录)。

在EF core中:

1. 实体类中关系属性;

2. FluentAPI关系配置;

3. 使用关系操作。

 

 

1、迁移生成数据库表。

2、编写代码测试数据插入。

3、不需要显式为Comment对象的Article属性赋值(当前赋值也不会出错),也不需要显式地把新创建的Comment类型的对象添加到DbContext中。EF Core会“顺竿爬”。

Article a1 = new Article();
a1.Title = "微软发布.NET 6大版本的首个预览";
a1.Content = "微xxxx";
Comment c1 = new Comment() { Message="支持"};
Comment c2 = new Comment() { Message = "微软太牛了" };
Comment c3 = new Comment() { Message = "火钳刘明" };
a1.Comments.Add(c1);
a1.Comments.Add(c2);
a1.Comments.Add(c3);
using (TestDbContext ctx = new TestDbContext())
{
	ctx.Articles.Add(a1);
    // ctx.Comments.Add(c1)  不需要特意去操作comment 表了
	await ctx.SaveChangesAsync();
}

个人理解:

一对多这样配置完,你只要操作 article 表,而不用特意去操作comment表。

换句话说:只要操作父对象。EF core会帮你自动的操作子对象

获取关系数据 使用  Include( ) 方法

Article a = ctx.Articles.Include(a=>a.Comments).Single(a=>a.Id==1);
Console.WriteLine(a.Title);
foreach(Comment c in a.Comments)
{
	Console.WriteLine(c.Id+":"+c.Message);
}

// Include定义在Microsoft.EntityFrameworkCore命名空间中。
// 查看一下生成的SQL语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董厂长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值