【问题标题】:Dynamic Data Model in Entity Framework CoreEntity Framework Core 中的动态数据模型
【发布时间】:2020-08-31 08:16:08
【问题描述】:

我有一个用户可以在运行时修改的数据库模型:

  • 向现有表添加新列
  • 添加新表

我想使用 Entity Framework Core 来访问这样的模型。

我能够使用反射为新表和字段创建类型,但我无法在 DbContext 类中为这些新类型创建 DbSet 成员,因为 DbSet 需要在编译时知道类型。

有谁知道这是否可以通过 EF Core 实现? 一种将类型动态注入 DbSet 成员的方法?

【问题讨论】:

  • 不,EF 绝对不是解决此问题的正确工具。使用 Dapper。

标签: entity-framework-core


【解决方案1】:

在我看来,用户是在运行时定义表及其列、关系等的人,这听起来很奇怪。可能您实际需要的是具有支持动态数据的表结构,这更易于管理,即定义 UserModels 的表,定义这些模型的属性的另一个表等。这会有很大的不同根据您的需要。

您还可以考虑使用一些特殊属性,如此处建议的 XML 数据类型字段:Dynamically adding a property to an entity framework object

【讨论】:

  • 用户可以在应用程序中定义其数据模型,从而在数据库级别创建新字段和新表。我们知道底层数据库模型的结构,理想情况下希望在 EF Core 中创建一个动态上下文来访问它。
  • 是的,但我指的是重新思考获得类似结果的方法,就像这里建议的那样:codeproject.com/Articles/839640/…
  • 否则,如果您仍然使用实际的表创建/更新,您可以使用像 Dapper 这样的 Micro ORM 稍后对其进行查询,这将更加灵活。 dapper-tutorial.net/dapper
猜你喜欢
  • 2019-12-06
  • 1970-01-01
  • 2019-03-09
  • 2022-08-20
  • 2021-07-09
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 2018-12-01
相关资源
最近更新 更多