大型数据库的模型优先还是代码优先

本文关键字:代码 数据库 模型 大型 | 更新日期: 2023-09-27 18:12:22

我需要你的意见。我在Efw 6.1的ASP MVC应用程序中使用模型第一方法。数据库中有太多的表(大约200个),由于时间限制,我很难为它编写代码。

当模型优先技术用于任何大型数据库应用程序而不是代码优先时,是否有任何性能问题?

大型数据库的模型优先还是代码优先

在Visual Studio中

  1. 右键单击项目

  2. 实体框架-逆向生成

VS创建

)的上下文

b)所有模型

使用八一不会有任何性能问题。用你觉得最舒服的那个。

模特第一很棒,去做吧。

关于主题的长篇大论

要在EF中定义一个模型,您可以使用Code First或"图形化"模型,您可以在其中绘制表格和关系。请注意:

  • 有工具可以将数据库逆向工程为两种模型,模型或代码优先
  • 独立于代码优先或模型,在内部,内存中总是有一个EDM,它是完全相同的(或有非常微小的差异)

因此,创建模型或代码优先模型所花费的时间是相同的。在维护模型时,您应该考虑使用哪一种方法更舒服。

如果您的模型将发展,在Code First中您可以使用迁移。在另一种情况下,您可以直接"右键单击"选项将模型更改应用到数据库。迁移使您能够更好地控制数据库升级(甚至降级)过程,并且它们可以很容易地应用于开发DB,也可以应用于任何其他DB(生产,登台…)。

如果你担心性能,正如我所说的,两个模型在内存上是相似的。最耗时的任务之一,即创建视图,在这两种情况下将花费相同的时间。当你的应用程序启动并且第一次使用上下文时,就会发生这种情况。但是你可以使用Entity Framework Power Tools Beta 4来预先创建这些视图(不要担心它是Beta 4,你可以安全地使用)。我已经使用这个工具很多年了)。

正如你在EF Power Tool的链接中看到的,它为你的菜单添加了有趣的选项,但我说的是创建视图。您可以在代码优先或模型中使用它。

最后,如果您使用Code First,您可以创建几个不同的上下文,每个上下文只包含表的一部分。如果这对您来说确实是个问题,那么这会提高性能。

所以决定应该基于你的个人喜好和你的工作方式。如果您没有偏好,我建议您使用Code First,更新代码中的实体,并使用Migrations将更改应用到DB。考虑到具有许多实体和关系的非常大的模型可能难以导航和查看。在Code First中,您总是可以通过名称找到实体(类),或者将实体组织在几个不同的文件中。

作为最后的注意事项,大多数可以用模型完成的事情,也可以用代码优先完成。除非你要做一些非常具体的事情,否则我怀疑这是一个选择其中一个的理由。