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

发布于 2024-10-20 06:19:55 字数 279 浏览 5 评论 0原文

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

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

一方面是提供用于实体模型编辑的UI,另一方面是反映此后模型和数据库中的更改。请提出建议。

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

For a business application, I am providing a base entity model. Thereafter the end user should be able to extend the model for his specific needs.

For the base model I want to use database-first approach. But I don't know how to accommodate for allowing user to extend it.

One part is to provide a UI for entity model editing and the other is to reflect the changes in the model and database thereafter. Please offer suggestions.

EDIT:
- Once the entity model is edited and saved, all EF facilities should work like before.
- Model update is conducted at the time of maintenance, i.e., it is not in use by business users.
- The affected project can be compiled and a new assembly can be produced and put to use.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

匿名。 2024-10-27 06:19:55

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

这通常与在客户端桌面上安装 C# 2010 Express 并允许它们修改、重建和重新部署您的应用程序的要求相同。

编辑:

您想要的需要:

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

It is not possible. When you modify entity model you must modify related entity classes (or create new ones) => you must recompile application or use some dynamic assemblies. Moreover there is no API to modify entity mapping at runtime so you are going to build new Entity designer.

It is generally same requirement as installing C# 2010 Express on client desktops and allowing them to modify, rebuild and redeploy your application.

Edit:

What you want requires:

  • Modifing EDMX - very complex XML file. Writing custom tool for that will be complex task. Moreover you will have to add logic wich will don't allow user to break the application.
  • Running T4 templates to generate new or modified entities.
  • Compiling application - what if user makes changes which break the build???
  • Redeploying DB - this itself is pretty bad taks because whole DB generation logic is Workflow running in Visual studio. Moreover you need another workflow which will be able to upgrade database - default one can only deploy new blank DB. Such workflow exists but it requires VS 2010 Premium or Ultimate.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文