技术思绪摘录旅行
在日常开发中,经常用到CodeFirst模式进行开发,那么我们需要了解基本的EFCore的使用和其原理,本次系列包括EFCore的迁移、关系描述,主要是以我个人经验向大家讲解,希望学习EFCore的同学们,能一看就知道关系描述应该怎么配置。

比如:
文章表:Article
评论记录表:Comment

记住以下几点:
1、关系分为双向导航、单向导航两种
2、关系描述在一端表和多端表都可以,只需要描述一次就行
3、有外键必须指定清楚,有导航属性必须指定清楚

public class Article
{
    public int Id { get; set; }
 
    public string Title { get; set; }
 
    public string Content { get; set; }
 
    public ICollection<Comment> Comments { get; set; }
}
public class Comment
{
    public int Id { get; set; }
 
    public string Message { get; set; }
 
    public  Article Article { get; set; }
}

注意看:
我给评论表(Comment)写了导航属性,但是没有实体外键,那么这种情况下,EF会默认再给多端生成一个字段(导航属性名称+Id)

设置多端描述:

modelBuilder.Entity<Comment>()
.HasOne(x => x.Article)      //Has对方(文章)数量为一,所以为One
.WithMany(x=>x.Comments);       //With己方(评论)数量为多,所以为Many  没有指定实体外键,所以不需要写HasForeignKey

设置一端描述:

modelBuilder.Entity<Article>()
.HasMany(x => x.Comments)      //Has对方(评论)数量为多,所以为Many
.WithOne(x=>x.Article);       //With己方(文章)数量为一,所以为One  没有指定实体外键,所以不需要写HasForeignKey

生成迁移文件看看:

ScreenShot00006.png

就是这么简单哦!

CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫