C# 如何基于EF Core中的查询创建对象(无键实体)?

C# 如何基于EF Core中的查询创建对象(无键实体)?,c#,.net-core,entity-framework-core,ef-core-3.1,C#,.net Core,Entity Framework Core,Ef Core 3.1,我试图将复杂SQL查询的结果映射到EF Core中的无键实体。(由于必须处理预先存在的数据库,我基本上需要创建一个视图客户端。) 然而,当试图检索数据时,我得到一个InvalidOperationException“Sequence contains no elements”。我可以将数据库中的基表映射到普通实体,因此我知道连接字符串是正确的。一个简化但完整的示例: 使用系统; 使用System.Linq; 使用System.Collections.Generic; 使用Microsoft.En

我试图将复杂SQL查询的结果映射到EF Core中的无键实体。(由于必须处理预先存在的数据库,我基本上需要创建一个视图客户端。)

然而,当试图检索数据时,我得到一个InvalidOperationException“Sequence contains no elements”。我可以将数据库中的基表映射到普通实体,因此我知道连接字符串是正确的。一个简化但完整的示例:

使用系统;
使用System.Linq;
使用System.Collections.Generic;
使用Microsoft.EntityFrameworkCore;
班级计划
{
静态void Main(字符串[]参数)
{
使用(var db=new QueryDbContext())
{
列表结果=db.Orders.ToList();//
{
m、 HasNoKey();
m、 ToQuery(()=>Set().FromSqlRaw(_OrdersSql));
});
}
}

Set()
是Query()的当前版本(自EFCore 3.0以来)。

问题在于,即使模型是只读的,模型属性也需要setter和getter。因此,模型应该是

公共类模型
{
公共字符串OrderId{get;set;}
}

我想知道您是否可以执行公共字符串OrderId{get;internal set;}?如果模型与EF代码位于不同的程序集中,我以前使用过这个技巧:(在具有实体POCO的csproj中。[程序集:InternalsVisibleTo(“Other.csproj.assembly.thas.has.EntityFramework.code”)]@格拉纳达编码是的,我相信你可以。我最终得到了
{get;private set;}
,这确实有效。