实体框架下的维护任务

时间:2010-08-16 18:32:58

标签: linq entity-framework

在使用实体框架(EF)和LINQ部署完整的应用程序之后,接下来的事情可能发生在“数据库之前已包含/映射到应用程序中的EF”中:

  1. 创建新表并包含在EF
  2. 从数据库中删除以前包含在EF
  3. 中的现有表
  4. 在表格中加入新字段,也包含在EF中。
  5. 删除以前包含在EF
  6. 中的现有表格中的字段
  7. 修改数据库中的字段(新类型或长度)并在EF中应用更改。
  8. 问题是:是否可以在使用EF的应用程序中轻松/自动修改所有这些更改?

1 个答案:

答案 0 :(得分:1)

您描述的修改,易于被EF设计师容纳或使用。继续并在数据库中进行更改。完成后,您只需右键单击EF设计器表面并选择从数据库刷新EF模型。

更难的部分是重新调整业务逻辑以符合新的数据模型。删除/更改的那些实体/表和属性/属性将在Visual Studio中突出显示,您必须访问每行代码才能更正它们。这可以在您的DAL /存储库中,也可以在任何引用您的EF模型的程序集中。

对于那些新的表/实体和属性或数据类型,您可以在代码中立即合并并开始使用它们。

要了解这将如何工作,请尝试更改一件事(删除实体/表或更改数据类型),然后按照我所描述的步骤进行操作。根据您对多项更改的容忍度,请考虑花费更长的时间来逐个管理数据模型更改。

  

EF是否有机制或“最佳实践”让我们将BL与新模型对齐?

我不确定我是否理解“将BL与新模型对齐”的意图。没有任何自动方法可以“修复代码以适应实体的新外观”。你只会看到编译器错误。

如果您正在询问如何防止数据库更改,我会说这是您在应用程序中做出的架构决策,并且没有任何BP。鉴于EF是一个ORM,一些开发人员会建议使用/消耗EF为您创建的实体。一些开发人员建议使用它们,并创建partial class以扩展其行为(与数据库分开的新方法或属性)。一些开发人员希望创建一组全新的类和对象模型来表示或使类看起来更像现实世界,而不是数据库如何构建数据模型。然后,他们继续在EF实体和他们自己的POCO类之间创建映射代码 - 在每个版本之间进行转换。

我的建议是:对你的表/实体使用ORM的类,并在需要时使用部分扩展它们的行为和数据。