使用模型中未定义的列

如何解决使用模型中未定义的列

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

表还可以包含在使用

创建应用程序后添加数据库的其他列

ALTER table 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 具有自己的继承映射功能,您可以使用它来实现与上述非常相似的功能 - see the docs。有什么理由不适合你吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?