首页
视频
资源
登录
原
CodeFirst配置外键,配置关系
5436
人阅读
2020/6/9 17:37
总访问:
588293
评论:
1
收藏:
0
手机
分类:
ORM
####一:直接利用导航属性生成外键 DBFIrst是外键生成的导航属性,反过来如果用code first可以根据导航属性来生成外键 缺点:不是很灵活,外键只在数据库有,模型里边没有,所以这种情况做添加的时候不能直接赋值,只能通过导航属性来间接添加外键(因为外键是通过导航属性维护的),做join查询的时候根本没法点出外键字段,链接查询只能通过导航属性。 当然你可以把字段名字写成和导航属性生成的外键名重名,这样也可以巧妙的做到model里边用到外键 <br/> ####二:利用ForeignKey特性配置外键(也是需要配合导航属性的) 这样就可以自己去维护外键字段,也就是模型中有外键,添加的时候可以直接添加,join可以点出来自己的字段 两种做法 1: ForeignKey配置到外键上,这个时候名字要写成导航属性的名字 ``` [ForeignKey("userinfo")] public int UserId { get; set; } public virtual UserInfo userinfo { get; set; } ``` 2: ForeignKey配置导航属性上面,这个时候名字写成外键的名字 ``` public int UserId { get; set; } [ForeignKey("UserId")] public virtual UserInfo userinfo { get; set; } ``` tn> 注意这个是属性不是字段!,要加get,set可能会因为很久没有用,就忘记了,写成字段了,这样就不行了。 <br/> ####三:Fluent API,在重写OnModelCreating方法通过lamdba来配置 1:先配置多的一方(按照多对一方式来配置) modelBuilder.Entity<Pet>().HasRequired(a => a.userinfo).WithMany(a => a.pets).HasForeignKey(a => a.UserId); 2:先配置一的一方(按照一对多方式来配置,相当于就是换个顺序) modelBuilder.Entity<UserInfo>().HasMany(a => a.pets).WithRequired(a => a.userinfo).HasForeignKey(a => a.UserId); 项目下载地址:https://download.tnblog.net/resource/index/50a5130aab0c421a8f60ed038143ffbb
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
TeachingNote
这一生多幸运赶上过你.
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net
37篇
后端
5篇
ORM
16篇
前端
48篇
随笔
13篇
移动开发
6篇
数据库
6篇
英语
3篇
rabbitmq
1篇
.net core
5篇
unity
1篇
k8s
1篇
云服务
1篇
DDD
1篇
网络
1篇
更多
mysql
1篇
python
2篇
docker
1篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术