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

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

本文介绍了在应用程序运行时扩展实体框架模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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.

这篇关于在应用程序运行时扩展实体框架模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 03:25