如何解决使用模型中未定义的列
ASP .NET Core MVC 5 应用程序在不同的 Postgres 数据库中运行。 所有数据库中的表名都相同。 所有数据库中的基本列名和类型都相同。
表还可以包含在使用
创建应用程序后添加到数据库的其他列ALTER table mytable ADD COLUMN mycol TYPE mytype
命令。
这些额外的列名和类型在不同的数据库中是不同的。
自定义列列表也存储在表 Datadictionary 中,其中包含表名、自定义列名和自定义列类型。
那些列应该在视图中显示给用户。视图应动态检测添加的列显示并允许更改其内容。
我在考虑两种可能性:
- 创建派生自具有附加列的 Varcoltable 类,编译 这个类在运行时传入 DbContext
尝试过
var ctx = new MyDbContext();
dynamic list = ctx.Varcoltables.FromsqlRaw("select * from varcoltable");
but got error.
-
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 具有自己的继承映射功能,您可以使用它来实现与上述非常相似的功能 - see the docs。有什么理由不适合你吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。