简体   繁体   English

从实体框架6.0动态选择数据运行时会引发异常

[英]Dynamically select data runtime from entity framework 6.0 throws exception

I would like to selected dynamic data from entity framework as per below. 我想按如下方法从实体框架中选择动态数据。

if I select "Select * from TableName" in queryString it works fine but if I select only selected column/columns it does not work and throws an exception. 如果我在queryString中选择“从TableName中选择*”,它可以正常工作,但如果我仅选择选定的列/列,则它不起作用并引发异常。

Working ok 工作正常

string queryString =      @"SELECT * FROM context.TableName ";
DbSqlQuery<SampleTable> result = context.SampleTable.SqlQuery(queryString);

Throws Exception 引发异常

columnList is generated run time from SampleTable which may consists one or more columns. columnList是从SampleTable生成的运行时,其中可能包含一列或多列。

 string queryString =      @"SELECT " + String.Join(",", columnList) + " FROM context.TableName ";
 DbSqlQuery<SampleTable> result = context.SampleTable.SqlQuery(queryString);

Exception: 例外:

The data reader is incompatible with the specified 'context.TableName ... A member of the type, does not have a corresponding column in the data reader with the same name. 数据读取器与指定的'context.TableName ...不兼容...类型的成员,在数据读取器中没有具有相同名称的对应列。

As per my understanding EF try to map all columns but above query does not have same number of columns as set in code and so it throws exception. 根据我的理解,EF尝试映射所有列,但是上面的查询没有与代码中设置的列数相同,因此会引发异常。

You can check the below steps : 您可以检查以下步骤:

  • Use the alias names of columns in your columnList (ex: tablename.Id instead of Id). 使用columnList中列的别名(例如:tablename.Id而不是Id)。
  • That all the column names in your columnList are mapped in the Entity. 将columnList中的所有列名都映射到Entity中。
  • Check that the column names in your columnList are same as of the Entity. 检查columnList中的列名是否与Entity的列名相同。

Hope this will help. 希望这会有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM