在应用程序运行时扩展实体框架模型

时间:2011-03-03 13:00:09

标签: entity-framework entity-framework-4 model data-modeling extensibility

对于业务应用程序,我提供基本实体模型。此后,最终用户应该能够根据他的特定需求扩展模型。

对于基本模型,我想使用数据库优先方法。但我不知道如何容纳用户扩展它。

一部分是为实体模型编辑提供UI,另一部分是反映模型和数据库之后的变化。请提供建议。

修改
- 编辑并保存实体模型后,所有EF设施应该像以前一样工作 - 模型更新在维护时进行,即商业用户不使用 - 可以编译受影响的项目,并可以生成并使用新的程序集。

1 个答案:

答案 0 :(得分:2)

这是不可能的。修改实体模型时,必须修改相关的实体类(或创建新的实体类)=>您必须重新编译应用程序或使用一些动态程序集。此外,没有API可以在运行时修改实体映射,因此您将构建新的实体设计器。

与在客户端桌面上安装C#2010 Express并允许他们修改,重建和重新部署应用程序的要求大致相同。

编辑:

你想要什么:

  • 修改EDMX - 非常复杂的XML文件。为此编写自定义工具将是一项复杂的任务。此外,您将不得不添加逻辑,不允许用户破坏应用程序。
  • 运行T4模板以生成新的或已修改的实体。
  • 编译应用程序 - 如果用户进行了破坏构建的更改,该怎么办?
  • 重新部署数据库 - 这本身就非常糟糕,因为整个数据库生成逻辑是在Visual Studio中运行的工作流程。此外,您需要另一个能够升级数据库的工作流 - 默认只能部署新的空白数据库。此类工作流程存在但需要VS 2010 Premium或Ultimate。