我想从实体框架中选择动态数据,如下所示。
如果我在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尝试映射所有列,但上面的查询没有与代码中设置的列数相同的列,因此会抛出异常。
答案 0 :(得分:0)
您可以查看以下步骤:
希望这会有所帮助。