Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实现动态web的最佳方法是什么?_C#_Asp.net_Asp.net Mvc_Dynamic - Fatal编程技术网

C# 实现动态web的最佳方法是什么?

C# 实现动态web的最佳方法是什么?,c#,asp.net,asp.net-mvc,dynamic,C#,Asp.net,Asp.net Mvc,Dynamic,我有一个包含许多实体的关系数据库。例如: (来源:) web应用程序动态允许对底层数据执行基本CRUD和List操作的最佳(简单但安全)方法是什么,而无需严格绑定到实际实体。因此,如果我在数据库中定义了另一个实体,我的应用程序将无需额外编码即可容纳它。 我从ASP.NET上的MVC方法开始,现在我怀疑这是一个好的决定。因此,在MVC中,我需要一种从数据库中读取实体列表的方法,并基于此动态创建适当的控制器。然后,我需要读取这些实体的属性并动态构建模型,最后,我的视图不应该绑定到特定的模型,因此

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

(来源:)

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、自己的动态控制器和一堆视图和编辑器模板。这是很多自定义代码,它不是很整洁,也不容易使用
  • 这种方法完全忽略了MVC的一个主要优点,即由模型进行数据验证。事实上,已经没有数据验证了,我必须为所有可能的字段类型编写自己的验证程序


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

这听起来像是一个问题。有没有具体的原因?因为在数据库中添加一个模型来支持一个新实体通常没有那么痛苦。第1部分:从我读到的关于EAV的内容来看:它是一种组织数据库而不是构建web应用程序的方法,而且它是一种专为存储具有多个字段特征的实体而设计的方法,在开发阶段没有完全定义,并且可能会发生变化。正如它还说的,它破坏了关系模式的好处,这对我来说很重要。我正在寻找一些东西,使我能够将数据库渲染成一组默认视图,而无需将实际实体硬编码到应用程序中。实体本身在数据库中会有很好的相关性。第2部分:我的理由是,一旦我编写了代码,我不想在需要字段的新实体时一直更改它,并且我为最终用户提供了一个接口,允许在应用程序内定义数据库对象,这将不需要重新编译应用程序。啊,感谢您的澄清!你看了吗?也许你可以在那里找到一些灵感。@user7217806我已经看过了Ilaro.Admin。这是一个整洁的项目,但实际上-我不能在应用程序代码中指定我的类,哪怕只有一次。它应该是通用的,基于数据库中的实体,在Ilaro中,在构建它之前需要声明实际的类。