【问题标题】:create table in database using EF from our applictaion Dynamically使用应用程序中的 EF 在数据库中动态创建表
【发布时间】:2016-09-14 21:42:06
【问题描述】:

我们能否使用用户为表定义字段的 EF 从我们的 Web 应用程序动态地在数据库中创建表。 我正在开发 MVC 4。

有可能吗? 如果是,那么该怎么做。

【问题讨论】:

  • 您可以使用代码优先的方法。
  • 我已经使用代码优先方法在我的应用程序中进行开发。以及从我的应用程序中动态地执行此操作的人。用户有一个创建表的界面。
  • 显示您做了什么或遇到了什么困难,以便我们提供帮助。否则,我们所能做的就是将您引导至一些教程。
  • 我想创建一个页面,用户可以在其中选择将新的项目类型添加到他的库中。所以他可以在数据库中创建这种类型的表。例如,如果他想将书籍项目添加到图书馆,那么他可以将字段添加到书籍表中,如 book_title、作者等,并且在创建此表后,他可以将书籍信息存储在由用户创建的书表。然而我对此无能为力,只是想我们可以先使用 EF 代码和 mvc 4 来做这样的事情。

标签: entity-framework asp.net-mvc-4


【解决方案1】:

取决于你对这里动态的理解。无法更改 Context 的运行时版本。

生成、编译、加载新代码是。因此可以声明一个新的上下文和 POCO 代码。编译并加载。全部由一段运行代码控制。

但是,正在进行的生命周期变得复杂。 使用代码优先迁移变得棘手。
如何在 Prod 中管理对扩展的更改。 如何合并正在进行的开发和产品。 在生成的代码中管理 Fluent API 中的映射非常糟糕。 你不能在属性中做到这一切。

上下文后空翻和自动迁移的噩梦让我度过了一个晚上。

处理主要构建自然扩展和生产/本地化实现扩展变得非常困难。您需要确保将它们重新合并到构建中。

而且必须知道如何同时管理同一个数据库上的不同上下文。

我现在正好有这个未完成的项目。在我们使用 EF6 之前,我已将其搁置。 我希望仅在这个主题上花费数周时间。 而且我仍然不确定我想继续沿着这条路走下去。 我正在认真考虑转向元数据/桶数据方法。

所以这是可能的,但很困难(至少在我看来)。由于多上下文支持,在 EF6 中会更容易。但它仍然会受到这些问题的影响,并且仍然需要代码生成和编译。

祝你好运……

【讨论】:

  • 我认为也一样,它是如此复杂。如何在运行时管理 DBContext 并将 DBSet 添加到 DBContext。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
相关资源
最近更新 更多