tnblog
首页
视频
资源
登录

CodeFirst配置外键,配置关系

6784人阅读 2020/6/9 17:37 总访问:824534 评论:1 收藏:0 手机
分类: ORM

一:直接利用导航属性生成外键

DBFIrst是外键生成的导航属性,反过来如果用code first可以根据导航属性来生成外键

缺点:不是很灵活,外键只在数据库有,模型里边没有,所以这种情况做添加的时候不能直接赋值,只能通过导航属性来间接添加外键(因为外键是通过导航属性维护的),做join查询的时候根本没法点出外键字段,链接查询只能通过导航属性。

当然你可以把字段名字写成和导航属性生成的外键名重名,这样也可以巧妙的做到model里边用到外键


二:利用ForeignKey特性配置外键(也是需要配合导航属性的)

这样就可以自己去维护外键字段,也就是模型中有外键,添加的时候可以直接添加,join可以点出来自己的字段

两种做法
1: ForeignKey配置到外键上,这个时候名字要写成导航属性的名字

  1. [ForeignKey("userinfo")]
  2. public int UserId { get; set; }
  3. public virtual UserInfo userinfo { get; set; }

2: ForeignKey配置导航属性上面,这个时候名字写成外键的名字

  1. public int UserId { get; set; }
  2. [ForeignKey("UserId")]
  3. public virtual UserInfo userinfo { get; set; }

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


三:Fluent API,在重写OnModelCreating方法通过lamdba来配置

1:先配置多的一方(按照多对一方式来配置)
modelBuilder.Entity().HasRequired(a => a.userinfo).WithMany(a => a.pets).HasForeignKey(a => a.UserId);

2:先配置一的一方(按照一对多方式来配置,相当于就是换个顺序)
modelBuilder.Entity().HasMany(a => a.pets).WithRequired(a => a.userinfo).HasForeignKey(a => a.UserId);

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


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

EF CodeFirst 配置外键关系

1、一对多关系方法一:通过默认名称(导航属性名称+主表名称)主表如下: 从表如下:Table的作用:因为EF默认会以类名的复...

NET Core 之EF CodeFirst的创建

第一步:找到appsettings.json这个文件,修改如下: { "Logging":{ "LogLevel":{ "Default&quo...

Core使用CodeFirst创建SQLServer数据库

1.先添加以下程序包Install-PackageMicrosoft.EntityFrameworkCore Install-PackageMicrosoft.EntityFrameworkCore.SqlSer...

.NetCore3.1使用CodeFirst并查询数据

.NetCore3.1使用CodeFirst并查询数据本文为小白简洁教程,前端玩多了后端基本的忘了,所以做个笔记!源码已上传,有需要可...

.net core EF CodeFirst

前言操作方法与Framework类似,使用前先下载EF依赖包Install-Package Microsoft.EntityFrameworkCore.SqlServer -version 3...

FreeSql CodeFirst设计模式

前言freesql Code First 设计模式freesql 支持更多的数据库特性而不只是支持基础的数据类型,这既是优点也是缺点,优点是充...

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

方法一:通过默认名称,导航属性名称+主表主键注意这个是属性不是字段!,要加get,set可能会因为很久没有用,就忘记了,写...

Code First 配置外键 一对多 多对多

?配置外键 一:导航属性 外键字段在模型中没有,没法自己去控制联和查询只能使用导航属性 //子表 namespaceModel ...

.net core EF Fluent API配置外键

和以前的写法变了一点点,以前HasRequired换成HasOne即可。以前的写法://1:先配置多的一方(按照多对一方式来配置) model...

css弹性盒子flex布局

css弹性盒子由于版本不同浏览器问题造成了一些不同的写法display:flexbox;在google浏览器中如果使用下面的写法就不行displa...

可输入下拉文本框据输入动态加载数据 jquery-editable-select

用到一个jquery-editable-select的控件github地址:https://github.com/indrimuska/jquery-editable-select这个插件的原理是...

.net mvc分部页.net core分部页

.net分部页的三种方式第一种:@Html.Partial("_分部页")第二种:@{ Html.RenderPartial("分部页");}...

css中单位pxemrem和vh/vw的理解

>px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。em是相对长度单位。相对于当前对象内文本的字...

让IIS支持webp格式图片让IIS支持vtt格式iis设置mime类型iis配置支持的类型

webp格式图片可以让图片体积变小。也让下载图片变得更加困难一点 在线制作webp工具 https://www.upyun.com/webp?utm_mediu...

网页上传文件断点续传的实现无视文件大小上传以及datatables基本用法

首先明白js是客户带执行代码,c#是服务器上执行代码。本地文件需要用到js处理,服务器端接受c#代码处理1.HTML页面,文件信...
这一生多幸运赶上过你.
排名
3
文章
317
粉丝
22
评论
14
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术