我正在设计我的web应用程序的架构。我想在后端使用asp.net mvc5和oracle数据库。
我的项目的一个基本要求是应用程序的管理员用户可以添加/删除表单域。我想在运行时(而不是设计时)物理地添加/删除数据库表中的列。
我如何在mvc中实现它,以及如何在运行时动态更新模型?
我是否应该使用一些ORM,或者我如何设计数据访问层?
我只需要架构设计方法的建议和提示。
发布于 2014-09-17 15:11:02
您可以尝试下面的表结构,而不是在运行时物理地添加和删除字段
Field Name Field Type
CustomField1Name Nvarchar(256)
CustomField1Value Nvarchar(Max)
CustomField1IsVisible Bool
CustomField1FieldType Nvarchar(32) [char/numeric/bool etc]
CustomField1Required Bool
CustomField2Name Nvarchar(256)
CustomField2Value Nvarchar(Max)
CustomField2IsVisible Bool
CustomField2FieldType Nvarchar(32)
CustomField2Required Bool如果您需要更多特定于字段的信息,如自定义验证,可以在此处添加。
重复此步骤,以确定所需的自定义字段数量。由于这种设计,在运行时,DB级别不会有任何结构变化。您可以在编码级进行的所有更改。
发布于 2014-09-18 11:09:37
实体属性值模式是一种方法。在我看来,如果过度使用,这将成为一种反模式。这有一些缺点,比如将每个值存储为字符串。您可能会发现很难将"true+“解析为布尔值。您也可以在弱类型方式或弱类型数据集中执行此操作。如果你想走这条路,你实际上是在创建列。不要给用户创建列的权限,而是给他们执行创建列的过程的权限。
https://stackoverflow.com/questions/25883037
复制相似问题