在Entity Framework中使用代码优先设计的3个理由
1)减少工作量,减少膨胀
使用现有数据库生成.edmx模型文件和关联的代码模型会导致大量自动生成的代码。恳请您不要触摸这些生成的文件,以免破坏某些内容,否则下一代的更改将被覆盖。上下文和初始化程序也卡在了这个烂摊子中。当需要向生成的模型添加功能时,例如计算的只读属性,您需要扩展模型类。最终这几乎是每个模型的要求,并且最终您扩展了所有模型。
首先使用代码,您的手工编码模型将成为您的数据库。您正在构建的确切文件将生成数据库设计。如果要添加属性或数据库不需要知道的其他任何内容,则没有其他文件,也不需要创建类扩展。只要遵循正确的语法,就可以将它们添加到同一类中。哎呀,如果需要的话,您甚至可以生成一个Model.edmx文件来可视化您的代码。
2)更好的控制
当您第一次进入DB时,您将无法为模型生成供应用程序使用的模型。有时,命名约定是不可取的。有时,关系和关联并不是您想要的。有时,与延迟加载的非暂时性关系会严重破坏API响应。
尽管几乎总是存在您可能会遇到的模型生成问题的解决方案,但是先执行代码可以让您从一开始就进行完整而精细的控制。您可以从舒适的业务对象中控制代码模型和数据库设计的各个方面。您可以精确指定关系,约束和关联。您可以同时设置属性字符限制和数据库列大小。您可以指定要加载的相关集合,或者根本不序列化。简而言之,您需要负责更多的工作,但是您可以完全控制应用程序的设计。
3)数据库版本控制
这是一个很大的。对数据库进行版本控制很困难,但是通过代码优先和代码优先的迁移,它更有效。由于数据库架构完全基于代码模型,因此通过控制源代码的版本,您正在帮助对数据库进行版本控制。您负责控制上下文初始化,这可以帮助您执行诸如种子固定业务数据之类的事情。您还负责创建代码优先迁移。
首次启用迁移时,将生成配置类和初始迁移。初始迁移是您当前的架构或基准v1.0。从那时起,您将添加带有时间戳并标有描述符的迁移,以帮助进行版本排序。当您从程序包管理器调用add-migration时,将生成一个新的迁移文件,其中包含UP()和DOWN()函数中代码模型中已自动更改的所有内容。UP函数将所做的更改应用于数据库,DOWN函数在您要回滚的事件中删除那些相同的更改。此外,您可以编辑这些迁移文件以添加其他更改,例如新视图,索引,存储过程等。它们将成为您数据库模式的真正版本控制系统。