当我编写一个相当简单的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();
我还需要做些什么来让匿名类型工作,所以我不需要创建类,只需在几列上选择查询结果?