【问题标题】:Dynamically select data runtime from entity framework 6.0 throws exception从实体框架6.0动态选择数据运行时抛出异常
【发布时间】:2014-08-12 00:49:54
【问题描述】:

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

如果我在 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 尝试映射所有列,但上述查询的列数与代码中设置的列数不同,因此会引发异常。

【问题讨论】:

  • 您的意思是“例外”,而不是“预期”。

标签: c# wpf entity-framework


【解决方案1】:

您可以检查以下步骤:

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-10-20
    • 2014-01-31
    • 2014-10-16
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多