一對一
一對一關(guān)系配置
1、builder.HasOne(o =>o.Delivery).WithOne(d=>d.Order).HasForeignKey(d=>dOrderId);
2、測試插入和獲取數(shù)據(jù)
示例
新建 Order
新建 Delivery
DeliveryConfig
OrderConfig
執(zhí)行 遷移命令
查看數(shù)據(jù)庫
測試數(shù)據(jù)插入
運行查看數(shù)據(jù)
多對多
1、多對多:老師一學生
2、EF Core 5.0開始,才正式支持多對多
3、需要中間表,舉例數(shù)據(jù)
多對多實體
class Student
public long Id { get; set; }
public string Name { get; set;}
public List Teachers { get; set;} = new List();
classTeacher
public long Id { get; set; )
public string Name { get; set;)
public ListStudents { get; set;} = new List();
多對多關(guān)系配置
builder.HasMany(s =>s.Teachers).WithMany(t=>t.Students).UsingEntity(j=>j.ToTable(“T_Students_Teachers”));
示例:
新建Student
添加Teacher
配置StudentConfig
配置TeacherConfig
配置DbContext
執(zhí)行數(shù)據(jù)庫遷移命令
生成的數(shù)據(jù)庫 表
Student
Teacher
指定的關(guān)系表
插入數(shù)據(jù)測試
運行結(jié)果:
查詢一下所有的老師,并且列出他們的學生
運行結(jié)果
基于關(guān)系的復雜查詢
關(guān)系數(shù)據(jù)查詢
1、查詢評論中含有“微軟”的所有的文章:ctx.Articles.Where(a=>a.Comments.Any(c=>c.Mesage.Contains(“微軟”)));
2、查看生成的SOL語句。
示例:
運行結(jié)果 和 sql
變換形式
1、變換成另一種寫法
ctx.Comments.Where(c => c.Message.Contains(“微”)
.Select(c => c.Article).Distinct();
2、查看生成的SQL語句
3、同樣效果的代碼可能有多種寫法,有時候要關(guān)注底層的SQL,看哪種方式最好
示例:
運行結(jié)果和sql
重復情況,
解決方式,加上Distinct()排重
運行結(jié)果:
例子
1、查詢“所有由蝸??爝f負責的訂單信息力
ctx.Orders.Where(o=>o.Delivery.CompanyName=="蝸??爝f”)文章來源:http://www.zghlxwxcb.cn/news/detail-799141.html
示例:文章來源地址http://www.zghlxwxcb.cn/news/detail-799141.html
到了這里,關(guān)于楊中科 .NETCORE EFCORE第七部分 一對一,多對多的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!