从实体框架6.0动态选择数据运行时抛出异常

时间:2014-08-12 00:49:54

标签: c# wpf entity-framework

我想从实体框架中选择动态数据,如下所示。

如果我在queryString中选择“Select * from TableName”它可以正常工作,但如果我只选择选定的列/列,则它不起作用并抛出异常。

工作正常

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

引发例外

columnList是从SampleTable生成的运行时间,它可能包含一列或多列。

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

例外:

  

数据阅读器与指定的'context.TableName ...不兼容。该类型的成员,数据阅读器中没有相应的列具有相同的名称。

根据我的理解,EF尝试映射所有列,但上面的查询没有与代码中设置的列数相同的列,因此会抛出异常。

1 个答案:

答案 0 :(得分:0)

您可以查看以下步骤:

  • 使用columnList中列的别名(例如:tablename.Id而不是Id)。
  • 您的columnList中的所有列名都映射到实体中。
  • 检查columnList中的列名是否与实体相同。

希望这会有所帮助。