使用模型中未定义的列



ASP.NET Core MVC 5应用程序在不同的Postgres数据库中运行。所有数据库中的表名都相同。所有数据库中的基本列名和类型都相同。

表还可以包含在使用创建应用程序后添加到数据库中的其他列

ALTER表mytable ADD COLUMN mycol TYPE mytype

命令。

这些附加的列名和类型在不同的数据库中是不同的。

自定义列列表也存储在表Datadictionary中,该表包含表名、自定义列名和自定义列类型。

这些列应该在视图中显示给用户。视图应动态检测添加的列显示,并允许更改其内容。

如何从这些列中获取数据并允许用户更改它们?

我正在考虑两种可能性:

  1. 创建从Varcoltable类派生的、具有附加列的类,编译该类,并传入DbContext

尝试

var ctx = new MyDbContext();
dynamic list = ctx.Varcoltables.FromSqlRaw("select * from varcoltable");
but got error.
  1. 添加类似的属性

    Dictionary<string,object> CustomColumns;  into base entity class and fill it with custom column values.
    public class Varcoltables : EntityBase { 
    }
    public class EntityBase { 
    public Dictionary<string,object> CustomColumns;
    }   
    

尝试使用动态作为子类:

class Varcoltable : dynamic { }

但出现编译错误"无法从动态类型派生">

如何实现?是否有一些框架源代码、文档或示例来实现这一点。

FromSqlRaw只能用于获取特定类型的查询(无论Varcoltables是什么(;EF Core不知道你的额外专栏,因此无法处理。更普遍地说,您试图绕过EF Core(通过自己添加列(,并使用它来访问修改后的表——这通常是行不通的。

请注意,EF Core有自己的继承映射功能,您可以使用它来实现与上面非常相似的功能——请参阅文档。有什么理由对你不起作用吗?

相关内容

  • 没有找到相关文章

最新更新