问题描述
对于业务应用程序,我正在提供一个基本实体模型.此后,最终用户应该能够根据自己的特定需求扩展模型.
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.
一部分是提供用于实体模型编辑的UI,另一部分是反映其后模型和数据库中的更改.请提供建议.
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.
编辑:
-编辑并保存实体模型后,所有EF功能都应像以前一样工作.
-模型更新是在维护时进行的,即商业用户没有使用它.
-可以编译受影响的项目,并可以生产新的程序集并将其投入使用.
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.
推荐答案
这是不可能的.修改实体模型时,必须修改相关的实体类(或创建新的实体类)=>您必须重新编译应用程序或使用一些动态程序集.此外,没有API在运行时修改实体映射,因此您将要构建新的Entity Designer.
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.
与在客户端桌面上安装C#2010 Express并允许它们修改,重建和重新部署应用程序通常是相同的要求.
It is generally same requirement as installing C# 2010 Express on client desktops and allowing them to modify, rebuild and redeploy your application.
您需要什么:
- 修改EDMX-非常复杂的XML文件.为此编写自定义工具将是一项复杂的任务.此外,您将不得不添加不允许用户破坏应用程序的逻辑.
- 运行T4模板以生成新的或修改的实体.
- 正在编译应用程序-如果用户进行更改以破坏构建,该怎么办?
- 重新部署数据库-这本身是一件很糟糕的事情,因为整个数据库生成逻辑都是在Visual Studio中运行的工作流.此外,您还需要另一个能够升级数据库的工作流程-默认情况下,该工作流程只能部署新的空白DB.虽然存在这种工作流程,但需要VS 2010 Premium或Ultimate.
这篇关于在应用程序运行时扩展实体框架模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!