假设有一个名为Info
的表,该表未完全映射到其实体框架(EF)类型。它具有在EF类型和N个其他nvarchar列上可见的Id列,这些列是不可访问的,即在EF类型上映射。例如:
数据库表:
Id INT, column1 NVARCHAR, column2 NVARCHAR, ..., columnN NVARCHAR
EF类型和上下文:
public class Info
{
public int Id { get; set; }
}
public partial class MyDbContext : DbContext
{
public MyDbContext() : base("name=myDbContext") { }
public virtual DbSet<Info> Infos { get; set; }
}
问题1:
有没有办法在加载的EF实体上访问未映射的列?他们甚至装?例如,我想从column1..columnN
?
new MyDbContext().Infos.First()
的值
问题2:
我的假设是第一个问题的答案是否定的,所以这是后续问题:
通过使用EF,在不知道实际存在多少列的情况下,检索所有nvarchar列(在本例中为column1..columnN)的值的最佳方法是什么?换句话说,如何通过Id查询Info
表并获取Dictionary<string, string> dictionary
中的所有nvarchar列,以便访问dictionary["column1"]
的值?假设我通过Id查询它,因此期望单个结果,即单个字典。
答案 0 :(得分:1)
数据库上下文对象具有Database属性,该属性本质上是数据库连接。您可以通过此对象运行直接SQL查询。 This page显示了示例。
但是,您无法将列添加到EF对象中:毕竟,您已将它们从模型中排除,因此它们根据您的说明不存在。但是,您仍然可以创建自己的对象来保存它们。