动态网络的最佳方法是什么?

时间:2019-12-14 22:21:00

标签: c# asp.net asp.net-mvc dynamic

我有一个包含许多实体的关系数据库。示例:

sample-relational-database-schema

(来源:https://www.researchgate.net/figure/A-sample-relational-database-schema_fig2_228999233

什么是使Web应用程序动态地允许基础数据进行基本CRUD和List操作,而不必严格绑定到实际实体的最佳方法(简单但安全)?因此,如果我在数据库中定义了另一个实体,我的应用程序将无需额外的编码即可容纳它。


我从ASP.NET上的MVC方法开始,现在我怀疑这是一个不错的决定。因此,在MVC中,我需要一种从数据库中读取实体列表并在此基础上动态创建适当控制器的方法。然后,我需要读取这些实体的属性并动态构建模型,最后我的视图不应该绑定到特定模型,因此它可以呈现任何动态模型。

我最终创建了一个名为Entity的类型,该类型将包含一个实体具有的所有字段的字典。这是例子

{
  "Id": "7655b4ae-4495-485a-8a66-3be469700726",
  "Name": "Contact",
  "Attributes": [
    {
      "Type": "string",
      "Value": "John",
      "Name": "firstname",
      "DisplayName": "First Name"
    },
    {
      "Type": "string",
      "Value": "Doe",
      "Name": "lastname",
      "DisplayName": "Last Name"
    },
    {
      "Type": "date",
      "Value": "1990-01-02T00:00:00.000Z",
      "Name": "birthdate",
      "DisplayName": "First Name"
    }
  ]
}

有一些困难:

  • 很难在视图中使用链接的实体
  • 为了支持模型,我必须编写自己的ModelBinder,自己的Dynamic Controller以及大量View和Editor模板。这是很多自定义代码,并且不是很整洁并且易于使用
  • 这种方法完全忽略了MVC的主要优点之一,即模型完成的数据验证。实际上,已经没有数据验证了,我必须为所有可能的字段类型编写自己的验证器。

我想听听您的想法或想法,或者任何指向进一步阅读的链接或已经找到好的解决方案的项目。我正在寻找ASP.NET/Core堆栈。

0 个答案:

没有答案