应无所住,而生其心
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

EF Code First配置1对多关系,配置外键关系

6292人阅读 2019/10/25 9:57 总访问:4816083 评论:0 收藏:0 手机
分类: EF

方法:通过默认名称,导航属性名称+主表主键



注意这个是属性不是字段!,要加get,set可能会因为很久没有用,就忘记了,写成字段了,这样就不行了。


还有可能会报错:


这是因为数据库表中的数据问题,如果以前附表里边本来就有数据,现在在去加外键,因为主表是刚刚才创建的里边数据没有,所以这个时候添加外键肯定因为数据问题加不上去哇

直接在数据库中执行也是一样的错,可以把附表里边的数据删除后在添加,或者是配置外键的字段设置成null<int>,可以为空的类型就行了。



父母表

生成的效果如下:




方法:通过ForeignKey("")

A:配置到字段上面 ForeignKey(“导航属性名字”)

              

B:配置到导航属性上面   ForeignKey("想要成为外键属性名字")



C:其实还有一种,配置到导航属性上面,但是名字不是和定义的外键字段一样, ForeignKey("外键属性名字,但不是自己定义的字段")
   这种方法其实就是使用导航属性生成外键,名字由自己控制而已不会把定义的字段设置成外键(这种配置方法注意ef版本,core是支持的)

         

方法3:  FluentApi

A:先配置多的一方

B:先配置1的一方


core里边的写法和以前的写法变了一点点,以前HasRequired换成HasOne即可。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    //方法1:
    modelBuilder.Entity<Student>().HasOne(a => a.UserParent).WithMany(a => a.Students)
              .HasForeignKey(a => a.MyUserParentId);
    //方法2:
    modelBuilder.Entity<UserParent>().HasMany(a => a.Students).WithOne(a => a.UserParent)
             .HasForeignKey(a => a.MyUserParentId);
}



项目下载地址:https://download.tnblog.net/resource/index/50a5130aab0c421a8f60ed038143ffbb



欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价