c# - 如何在运行时使用 Entity Framework 动态添加/删除字段?

标签 c# entity-framework

我的项目需要在运行时动态添加/删除字段。我已经创建了这个功能,但没有在 EF 中创建。我想使用 EF 创建此功能。有什么想法如何做到这一点吗?

最佳答案

如果您需要动态数据结构,您必须使用完全不同的架构,否则就不能使用 EF。 EF 不是用于动态更改数据库的工具 - 只需看看如何使用 EF 即可。您将静态表映射到静态类定义。如果在运行时更改表,如何更改类(EF 中不支持动态)?

作为替代数据库结构的示例,您可以使用具有多个不同类型的预定义列的数据库,并且新字段将映射到新类型。您的应用程序中将有额外的“映射”层,它将根据存储在其他地方的某些类型元数据来解释您的数据库内容。这是 Sharepoint(至少 2007 年)使用的方法,其中您单独存储内容类型(数据描述),但所有内容都在一个包含大量列的巨大表中。

另一个示例是结构,其中您有单独的核心数据表(在所有实体之间共享)、单独的属性描述表以及单独的与核心数据相关的属性值表。该数据库结构有一个名称,但我现在想不起来。

每种动态方法都有其代价。通常,您会丢失强类型工作的某些部分,并且会损失性能。

您的链接工具不适用于更改数据库结构。只是修改映射中的名称,但表结构必须保持不变。

关于c# - 如何在运行时使用 Entity Framework 动态添加/删除字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8710573/

相关文章:

c# - EF Core - 添加具有唯一索引的数据时出现重复键错误

c# - ReactiveUI ViewModel (ReactiveObject) 异步任务的取消

c# - 使用自动生成的 Poco 实体

c# - 值类型继承自 System.Object...为什么?

c# - 如何打印不存在的东西?

c# - Entity Framework - 查询可为空列的问题

visual-studio-2010 - 使用 Entity Framework ,允许空属性不在模型中更新

c# - Entity Framework 核心和 MS Access

c# - 如何在不使用 EntityFramework 保存到数据库的情况下在 ASP.NET 中跨实体请求保存状态?

c# - 创建模型时不能使用上下文。 dbContext 正在其他地方使用?