架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11687|回复: 0

[资料] EF Core 系列(二)封装 OnModelCreating 利用反射创建索引等

[复制链接]
发表于 2020-9-22 10:57:19 | 显示全部楼层 |阅读模式
索引是跨多个数据存储区的常见概念。 尽管它们在数据存储中的实现可能会有所不同,但也可用于基于列 (或一组列来进行查找,) 效率更高。

https://docs.microsoft.com/zh-cn/ef/core/modeling/indexes

需要了解的知识:

.net/c# 利用反射动态执行方法
https://www.itsvse.com/thread-4771-1-1.html

c# 反射获取对象属性的displayname
https://www.itsvse.com/thread-3219-1-1.html

在 Entity Framework 6 中,可以在字段上面加特性的方式添加索引,但是在 ef core 中,无法使用特性给表字段添加索引,必须重写 OnModelCreating 方法,在里面一条一条的写对应的规则。

不同表都需要写在此方法内,不好维护,可读性太差,所以,我们将每个表的索引,写在自己方法里面,便于更新查找。

ef core 使用的是 code frist 模式创建表结构。

首先新建 IOnModelCreate 接口,代码如下:

我们在不同表的 class 类中,最下面定义一个对象并继承该接口,例如:

AccountSetting 代码:
EmailSentHistorySetting 代码:

在自己 DbContext 上下文对象中,重写 OnModelCreating 方法,使用反射的方式,依次执行 OnModelCreating 方法,来实现创建索引、关系、数据种子设定等。

OnModelCreating 方法如下:

QQ截图20200922105517.jpg

执行创建迁移命令,生成的代码如下:

QQ截图20200922105633.jpg

发现,可以成功通过反射的方法来创建索引等。

(完)





上一篇:.NET Core 基于 Redis 实现分布式锁原理解析
下一篇:ASP.NET Core(一)使用 Redis 缓存
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-27 09:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表