C# 所需的列';id';在EFcore中的'FromSql'操作的结果中不存在

C# 所需的列';id';在EFcore中的'FromSql'操作的结果中不存在,c#,sql-server,entity-framework,linq,entity-framework-core,C#,Sql Server,Entity Framework,Linq,Entity Framework Core,我对SQL的有一个主要问题,就是: 我有一个这样的模型: public partial class model { public string name } 我想从数据库(SQLSerever)中的过程中得到一些结果。 当我执行下面的代码时 var sql = "EXECUTE [myprocedure] @param1 "; SqlParameter sqlParameter = new SqlParameter { ParameterName = "param1",

我对SQL的
有一个主要问题,就是:

我有一个这样的模型:

public partial class  model
{
    public string name
}
我想从数据库(SQLSerever)中的过程中得到一些结果。 当我执行下面的代码时

var sql = "EXECUTE [myprocedure] @param1 ";
SqlParameter sqlParameter = new SqlParameter
{
     ParameterName = "param1",
     DbType = DbType.Int32,
     Value = 10;
}
var result = db.model.FromSql(sql,SqlParameter);
它显示了这样一个例外:
实体类型“model”需要定义主键。
因此,我将主键添加到我的模型中:

public partial class  model
{
    [key]
    public int ID {set;get;}

    public string name
}
但在这一次,它显示了以下执行选项:
所需的列“ID”在“FromSql”操作的结果中不存在。

我知道我必须将
ID
添加到我的数据库响应中,但我不能这样做,因为我的数据库中有很多过程,所以我无法编辑所有过程。 因此,我正在寻找一种方法来解决我的问题,而无需编辑我的程序


有人能帮我吗

如果您使用的是Entity Framework Core 2.x,请查看查询类型()。 表(实体类型)总是需要ID,查询类型不需要

对于查询类型,您可以省略ID。否则,您必须确保存储过程也返回一个ID,因为表/实体类型总是需要一个ID


从EF Core 3.0开始,有一个.HasNoKey()而不是查询类型来定义没有ID()的实体。

我会将它从SQL保存到一个var中,并在运行时检查它返回什么,可能它区分大小写,ID实际上是ID。例如,感谢response@ctron,你说我使用
ExecuteSqlCommand
而不是sql
中的
。如果是:我需要从我的过程中得到一些结果,这样我就不能使用
ExecuteSqlCommand
,如果否:你能描述更多并举例说明吗?你使用的是EF6还是EF Core?如果您在问题中使用efcore作为“entityframeworkcore”标记,那么查询类型就是解决方案。对于EF6,我不认为有这样的事情(但也许有一位EF6专家知道解决方案)。也许像Dapper这样的框架可以作为调用存储过程的替代方案。实体框架在变更跟踪和使用表方面有更多的优势。我对它进行了测试,它可以工作。但是我使用了EF Core 3,它显示了一个警告,
DbQuery()已过时。改用DBSet
!!我该怎么办@amir133使用未发布(预览)软件是您的权利,但风险也是如此。你不能指望我们用这种软件解决问题。在它发布之前,所有的问题都应该转到他们的GitHub问题跟踪器。我对3.0版的更改还没有任何经验。一个好的起点可能是,现在似乎有了一个用于实体的.HasNoKey()。