EF:如何减少第一次 DataContext 初始化时间
我对具有 100 多个表的数据库使用自动生成的实体框架数据模型。虽然我只使用 5 个表,但我选择将所有表映射到 C# 类。
每次我启动在 FormLoad 事件中创建 DataContext 实例的 dekstop 应用程序时,一些内部 EF 初始化需要 3-4 秒。此启动时间很大程度上取决于自动生成的类的数量。当我决定只为 5 个表生成映射时,启动时间显着减少。
我想知道幕后发生了什么,我可以更改标准行为,将所有未使用的表映射保留在程序中吗?我不想关心需要映射哪些表。我猜 EF 做了一些反射工作,它可以以延迟加载风格或某种方式完成吗?
先感谢您!
I use auto generated Entity-Framework Data Model for a Database that has 100+ tables. Though I use only 5 tables I select all tables to be mapped onto c# classes.
Every time I start dekstop application that creates DataContext instance in FormLoad event it takes 3-4 seconds for some inner EF initialization. This startup time strongly depends on number of autogenerated classes. When I decided to generate mapping only for 5 tables - start up time decreased dramatically.
I wonder what is going on behind the scenes and can I change standard behavior keeping all unused table mappings in a program? I don't want to care what tables do I need to be mapped. I guess EF does some reflection work, may it be done in lazy-load style or some of a kind?
Thank you in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议阅读这两篇文章 第 1 部分 和 第 2 部分。他们解释了启动应用程序时会发生什么,以及如何通过为实体框架预生成视图来减少启动时间。无论如何,包含您不需要的表都是不好的方法,没有什么比简单地将它们从实体模型中删除更能减少您的启动时间。
I recommend reading these two articles Part 1 and Part 2. They explain what happens when you start the application and how to reduce startup time by pregenerating Views for entity framework. Anyway including tables which you don't need is bad approach and nothing will reduce your startup time more then simply removing them from entity model.