在Linq查询到数据服务中使用的.NET匿名类型在Select上给出错误

时间:2017-05-26 19:48:13

标签: .net entity-framework linq wcf npgsql

当我编写一个相当简单的Linq查询客户端时,我看到一个错误,应该从我从其他问题中读到的关于类似问题的内容开始工作。

我有以下测试代码:

    async System.Threading.Tasks.Task<int> MyMethodAsync()
    {
        return await CallAnotherAsyncMethod();
    }

执行此代码时会出现错误:

var result = publicCtx.Participants.Where(x => x.CompanyID == 1008)
  .Select(x => new { ID = x.ID, Sequence = x.Sequence } ).ToList();

根据我的阅读,需要无参数构造函数的标准解决方案是使用匿名类型,我在这里使用。数据类型是int?用于CompanyID和Sequence,以及用于ID的字符串。所有这些都是实体模型中的可空字段(旧数据库仍在转换)。我在服务端使用npgsql数据提供程序为实体模型使用WCF数据服务。

当我创建一个基本类来返回结果时,一切都成功了:

Construction of entity type instances must use object initializer with default constructor.

public class ParticipantResult
{
    public string ID;
    public int? Sequence;
}

编辑:我已添加了周围的代码供参考:

var result = publicCtx.Participants.Where(x => x.CompanyID == 1008)
  .Select(x => new ParticipantResult() { ID = x.ID, Sequence = x.Sequence } )
  .ToList();

我还需要做些什么来让匿名类型工作,所以我不需要创建类,只需在几列上选择查询结果?

0 个答案:

没有答案