我有一个可以在运行时由用户修改的数据库模型:
- 向现有表添加新列
- 添加新表
我想使用实体框架核心来访问此类模型。
我能够使用反射为新表和字段创建类型,但我无法在 DbContext 类中为这些新类型创建 DbSet 成员,因为 DbSet 需要在编译时知道类型。
有谁知道这是否可以通过 EF Core 实现? 一种将类型动态注入到 DbSet 成员的方法?
对我来说,用户是在运行时定义表及其列、关系等的人,这听起来很奇怪。可能您实际需要的是有一个表结构来支持动态数据,这更易于管理,即定义 UserModel 的表、定义这些模型属性的另一个表等。根据您的需求,这将有很大差异。
您还可以考虑使用一些特殊属性,如 XML 数据类型字段,如下所示: 向实体框架对象动态添加属性