Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >每次启动应用程序时,都会运行OnModelCreating方法

每次启动应用程序时,都会运行OnModelCreating方法
EN

Stack Overflow用户
提问于 2020-12-07 12:27:11
回答 1查看 225关注 0票数 0

我使用code first ef core创建了一个数据库,并通过重写OnModelCreating方法使用迁移文件作为种子。

代码语言:javascript
代码运行次数:0
复制
public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
           : base(options)
    {
    }

    public DbSet<TestModel> TestModel{ get; set; }
    ....

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Seed();
    }

Seed方法从多个excel文件中读取,并从每一行创建新实体。

代码语言:javascript
代码运行次数:0
复制
modelBuilder.Entity<TestModel>().HasData(
                    new TestModel
                    {
                        Id = int.Parse(reader.GetValue(0).ToString()),
                        ....
                    }

在Startup.cs上,我获得了dbContext并调用了Migrate方法,尽管我不认为它是必要的,因为我在应用程序运行之前使用了“添加-迁移”和“更新数据库”命令。

代码语言:javascript
代码运行次数:0
复制
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ApplicationDbContext applicationDbContext)
    {
        applicationDbContext.Database.Migrate();
        ...
    }

微软文档说,对于OnModelCreating方法:“通常,当派生上下文的第一个实例是created.The模型时,这个方法只被调用一次,然后该上下文的模型被缓存,并用于应用程序域中上下文的所有其他实例。”

每次应用程序启动时,都会调用该方法并执行它的工作。这是第一次尝试这样做,老实说,如果我没有一些扩展方法尝试解析文件中的一些DateTime值,我甚至不会注意到这一点。因为我的笔记本电脑和台式机的语言环境不同,所以我的笔记本电脑上出现了这些问题。

OnModelCreating是否在每次启动时都运行以进行缓存?如果是这样,如果数据库上的一行被更新,那么缓存的行会发生什么情况呢?

我可以让它只运行一次(它必须在迁移文件中植入数据的时间),还是有其他方法可以做到这一点?

目前,当我在另一台机器上工作,或者想要添加另一个迁移,并且我想要一个变通方法时,我会对这些部分进行注释。如果这是所有流发生的正确方式,那么这意味着我必须修复我的扩展方法,这样它们就不会在其他机器上中断。

EN

回答 1

Stack Overflow用户

发布于 2020-12-07 13:07:23

我使用的EF Core的data seeding (它有许多限制,请参阅链接)的替代方案是:

  • 种子数据作为迁移的一部分,也就是将代码添加到迁移文件中。
  • 添加额外的专用迁移,该迁移仅填充数据-例如,将新行添加到类似表的引用(可用的类似枚举的数据)的迁移。
  • 添加一个不是由EF调用而是由其他对象调用的函数-此方法包含添加所有必要数据的代码(例如,LINQ- to -SQL)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65181728

复制
相关文章
Java Web之动态代理
动态代理通俗解释: A接口有c方法,类B实现A接口,原本应该是执行B类中的c方法,可现在不这样做,可以先声明产生B类的代理类B',由它来冒充B类的“兄弟”并“实现”A接口, 对外界来说B'应该也有c方法,可当真正调用它的时候, 它会去执行与它关联InvocationHandler的invoke()方法, 在这个方法里面你可以做很多事情。 Java怎样实现动态代理呢 第一步,我们要有一个接口,还要有一个接口的实现类,而这个实现类就是我们要代理的类。 public interface Subject {
YungFan
2018/05/03
6900
Web代理(HTTP代理)
有了Web代理,客户端就可以与代理进行对话,然后由代理代表客户端与服务器进行交流。客户端仍然会完成对事务的处理,但它是通过代理服务器提供的优质服务来实现的。HTTP 的代理服务器既是 Web 服务器又是 Web 客户端。HTTP 客户端会向代理发送请求报文,代理服务器必须像 Web 服务器一样,正确地处理请求和连接,然后返回响应。同时,代理自身要向服务器发送请求,这样,其行为就必须像正确的 HTTP客户端一样,要发送请求并接收响应。
zy010101
2022/10/28
9220
Web代理(HTTP代理)
TeaWeb – 可视化的Web代理服务
最新版下载:http://teaos.cn/download#tunnel 相关文档:http://teaos.cn/doc/main/Summary.md
Erwin
2020/07/30
9160
TeaWeb – 可视化的Web代理服务
java 设置代理服务器_网络代理
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
4100
http代理服务器实现(web cache)
这个项目是计算机网络的课程项目之一,要求使用socket编程实现http代理服务器,能够同时服务两个以上客户端同时访问,允许用户自行设置工作区。而我在这里使用的是比较熟悉的Java实现。 如果同学们有幸搜到了这篇文章,请有限制的借鉴,毕竟课程项目的初衷就是为了让同学们在时间中巩固知识,而不是交差拿高分。
vincentbbli
2021/08/18
7050
Java 静态代理、Java动态代理、CGLIB动态代理
Java 的代理就是客户类不再直接和委托类打交道, 而是通过一个中间层来访问, 这个中间层就是代理。为啥要这样呢, 是因为使用代理有 2 个优势:
java思维导图
2019/05/21
7.1K0
"轻"量级 Java Web 服务框架漫谈
1. Java Web 服务框架的前世今生 时光回到 2000 年中, 老码农坐在天津河川大厦 7 楼接手平生第一个 Web 服务项目, 采用的是最新(当年)的 Java Servlet 技术, 倒腾着精致(自认为)的结构来处理 HttpServletResponse 输出 (幽怨地看向 N 年之后 Beetl, 却看不到 Rythm 的模样); 半年后第二个 web 项目开坑的时候, 从 apache jarkata 中挖出了一个名叫 Velocity 的模板, 果断放弃自己的输出框架; 再一年半之后的
老码农
2019/06/25
1.6K0
"轻"量级 Java Web 服务框架漫谈
JAVA 代理
在讲代理之前,先说一下何为代理,通俗的讲解,当我们在购买房子时,我们需要通过中介来进行,即中介从房东手中获取房源,我们通过中介了解到房屋信息,中介起到了一个中间人的作用,此时他相当于代理。
用户9691112
2023/06/27
1260
JAVA 代理
Java动态代理与静态代理静态代理动态代理
我们先看一个简单的例子,当我们需要程序中加入方法执行的日志信息的时候,很显然我们最容易想到的实现方法,就是在方法前后插入日志记录信息。
desperate633
2018/08/22
5160
Java动态代理与静态代理静态代理动态代理
java 代理模式-静态代理与动态代理
    举个例子吧:我们生活中的租房问题。假如我们去租个房子,我们大多数情况下是不会知道房主(就是真正租房,一手货源)的,我们是不是都是先去某些租房平台,或者去找当地的中介去询问何时的房子。我们通过九牛二虎之力在中介那里找到了个物美价廉的房子后,你的租金是不是交给了中介,中介还会收取一些额外的推荐费啦,押金啦、手续费等之类的,那么好,这样的一小段,就已经出来了其中两大核心对象了。
Arebirth
2019/09/24
4010
java 代理模式-静态代理与动态代理
静态代理与动态代理_java静态代理动态代理
在实际使用中,经常会遇到一些场景:想在多方法前或方法后加一个共同的方法,如在方法执行前后打印日志、在方法执行完成发送消息通知等。这个时候,我们可以在方法前后调用公用方法,也可以使用代理实现,当然,代理的作用不止如此,这里不做赘述,实现方法如下:
全栈程序员站长
2022/09/27
3240
Java 静态代理与动态代理
代理模式 设想你的项目依赖第三方,但是你需要对其接口做一些数据检验、性能数据记录、异常处理等,合适的方法就是使用设计模式里的代理模式。 代理模式是常用的java设计模式,代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。 在java里可以有静态代理和动态代理. 静态代理 按照代理模式标准实现方法: public interface API { public void method(); } publ
JadePeng
2018/03/12
9540
使用java自制简易web服务器
记得好多年前,刚刚开始学javaweb的时候,老师教的第一件事是安装jdk,第二件事就是安装tomcat了。
haohulala
2023/03/11
1.3K0
使用java自制简易web服务器
Ubuntu server搭建Java web服务器
在这里为大家介绍如何在Ubuntu server搭建Java web服务器,输入命令时请留意作者的Ubuntu路径的变化
夜雨飘零
2020/05/06
2.1K0
java代理模式之静态代理
  作为一个初级开发者,可能不会接触到代理模式,但是在很多框架的使用中都不知不觉使用了代理模式,比如servlet的过滤器链,spring的AOP,以及spring mvc的拦截器等。所以了解代理模式对于个人的成长是不可避免的。
intsmaze-刘洋
2018/08/29
3370
java代理模式之静态代理
Java--代理模式、动态代理
有一名员工A,他出于某些原因需要公司签字,老板和秘书都可以执行公司签字的职能,但是秘书没有直接签字的权力,真正签字的必须是老板,而员工并不能直接找老板签字,只能和秘书打交道。由此看出,秘书只是一个代理者,他和老板拥有相同的职能,但是最终执行职能的还是老板,是员工和老板中间的窗口
aruba
2021/12/06
2380
Java--代理模式、动态代理
Java动态代理与Cglib代理
最近又继续回来死磕Spring源码,以前看的也忘得差不多了,这次先把Spring使用的动态代理cglib看了一下,打好基础知识。 cglib使用上特别简单,而且也不像Java要实现动态代理一样必须有接口,看一下cglib的wiki可以很容易上手。
Dylan Liu
2019/07/01
2.7K0
Java动态代理
上面ClassA是委托类,ClassB是代理类,ClassB中的函数直接调用ClassA中相应的函数,并隐藏了ClassA的method3()函数。
用户1205080
2018/09/12
7980
Java动态代理
Java代理3:二刷代理
在使用动态代理时,需要定义一个位于代理类与委托类之间的中介类,也叫动态代理类,该类被要求实现InvocationHandler接口。
WindCoder
2020/01/22
2990
Java动态代理
打个比方,如果系统中有2个类,A和B,以前是A依赖B,即A直接调用B的某个方法,表示为A->B;
心平气和
2021/03/16
4460

相似问题

是否将char转换为char数组或将char数组转换为char?

84

将char[,]数组转换为char**

11

将Char*转换为Char*的数组

41

将char数组转换为unsigned char*

21

将vector<char *>转换为char **数组?

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文