大型数据库的模型优先或代码优先

时间:2014-07-11 07:46:00

标签: c# asp.net-mvc entity-framework ef-code-first

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

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

3 个答案:

答案 0 :(得分:2)

在Visual Studio中

  1. 在解决方案资源管理器

  2. 右键点击项目

  3. 实体框架 - 反向engenerieng

  4. VS创建

    a)上下文

    b)所有模型

答案 1 :(得分:2)

使用eighter时,不会出现任何性能问题。使用你觉得最舒服的那个。

模型第一是伟大的,去吧。

Long answer on the subject

答案 2 :(得分:2)

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

  • 有工具可以将数据库反向工程为两种模型,模型或代码优先
  • 独立形成Code First或Model,在内部,内存中始终存在EDM并且它完全相同(或者具有非常小的差异)

因此,创建Model或Code First模型所需的时间是相同的。在维护模型时,你应该考虑一下你是否觉得更舒服。

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

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

正如您在EF Power Tool的链接中所看到的,它为您的菜单添加了有趣的选项,但我在谈论创建视图。您可以将它用于Code First或Model。

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

因此,决定应基于您的个人偏好和工作方式。如果您没有首选项,我建议您使用Code First,更新代码中的实体,并使用迁移将更改应用于数据库。认为一个非常大的模型与许多实体的关系可以是难以导航和看到的。在Code First中,您始终可以按名称查找实体(类),或者将实体组织在多个不同的文件中。

作为最后一点,使用模型可以完成的大部分工作也可以通过Code First完成。除非你打算做一些非常具体的事情,否则我怀疑这是选择其中一个的理由。