我正处于设计Web应用程序架构的阶段。我想在后端使用asp.net mvc5和oracle数据库。
我的项目的一个基本要求是应用程序的管理员用户可以添加/删除表单字段。我想在运行时(而非设计时)在数据库表中物理添加/删除列。
如何在mvc中实现它以及如何在运行时动态更新模型?
我应该使用一些ORM还是我为此设计数据访问层?
我只需要建筑设计方法的建议和提示。
答案 0 :(得分:0)
您可以尝试使用以下表结构
,而不是在运行时物理添加和删除字段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级别不会发生结构更改。您可以在编码级别进行的所有更改。
答案 1 :(得分:0)
实体属性值模式是一种方法。在我看来,如果过度使用,这将成为一种反模式。这有一些缺点,例如将每个值存储为字符串。您可能会发现很难解析" true +"作为一个博尔。您也可以使用弱类型的方式或弱类型的数据集来执行此操作。如果你想走这条路线,你实际上就是要创建列。不授予用户创建列的权限,授予他们执行创建列的proc的权限。