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

C# 从实体框架6.0动态选择数据运行时引发异常,c#,wpf,entity-framework,C#,Wpf,Entity Framework,我想从实体框架中选择动态数据,如下所示 如果我在queryString中选择“select*from TableName”,它可以正常工作,但如果我只选择选定列,它将不工作并引发异常 工作正常 string queryString = @"SELECT * FROM context.TableName "; DbSqlQuery<SampleTable> result = context.SampleTable.SqlQuery(queryString); string

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

如果我在queryString中选择“select*from TableName”,它可以正常工作,但如果我只选择选定列,它将不工作并引发异常

工作正常

string queryString =      @"SELECT * FROM context.TableName ";
DbSqlQuery<SampleTable> result = context.SampleTable.SqlQuery(queryString);
string queryString=@“SELECT*FROM context.TableName”;
DbSqlQuery result=context.SampleTable.SqlQuery(queryString);
引发异常

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

 string queryString =      @"SELECT " + String.Join(",", columnList) + " FROM context.TableName ";
 DbSqlQuery<SampleTable> result = context.SampleTable.SqlQuery(queryString);
string queryString=@“SELECT”+string.Join(“,”,columnList)+“FROM context.TableName”;
DbSqlQuery result=context.SampleTable.SqlQuery(queryString);
例外情况:

数据读取器与指定的“context.TableName”不兼容。。。类型的成员在数据读取器中没有同名的对应列


根据我的理解,EF尝试映射所有列,但上述查询的列数与代码中设置的列数不同,因此会引发异常。

您可以检查以下步骤:

  • 使用列列表中列的别名(例如:tablename.Id而不是Id)
  • 确保columnList中的所有列名都映射到实体中
  • 检查列列表中的列名是否与实体的列名相同
希望这会有所帮助。

你的意思是“例外”,而不是“期望”。