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

时间:2019-05-08 12:34:16

标签: c# sql-server entity-framework linq entity-framework-core

我对range有一个主要问题,就是这样:

我有一个这样的模型:

FromSql

我想从数据库中的过程中获得一些结果(sql serever)。 当我执行以下代码

public partial class  model
{
    public string name
}

它显示了这样一个例外: var sql = "EXECUTE [myprocedure] @param1 "; SqlParameter sqlParameter = new SqlParameter { ParameterName = "param1", DbType = DbType.Int32, Value = 10; } var result = db.model.FromSql(sql,SqlParameter); 因此,我向模型添加了主键:

The entity type 'model' requires a primary key to be defined.

但是这次它显示了执行:public partial class model { [key] public int ID {set;get;} public string name }

我知道我必须在数据库响应中添加The required column 'ID' was not present in the results of a 'FromSql' operation.,但是由于我的数据库中有很多过程,所以无法进行全部编辑,因此无法执行此操作。 因此,我正在寻找一种无需编辑程序即可解决问题的方法。

能帮上我吗?!

1 个答案:

答案 0 :(得分:3)

如果您使用的是Entity Framework Core 2.x,请查看查询类型(https://docs.microsoft.com/en-us/ef/core/modeling/query-types)。 表(实体类型)始终需要一个ID,而查询类型则不需要。

使用查询类型,您可以省略ID。否则,您必须确保您的存储过程也返回一个ID,因为表/实体类型始终需要一个ID。

从EF Core 3.0开始,有一个.HasNoKey()而不是查询类型来定义没有ID(https://docs.microsoft.com/de-de/ef/core/what-is-new/ef-core-3.0/breaking-changes#query-types-are-consolidated-with-entity-types)的实体。