我在使用 FromSql
时遇到了一个主要问题,就是这样:
我有一个这样的模型:
public partial class model
{
public string name
}
我想从数据库(sql server)中的过程中获得一些结果。 当我执行下面的代码时
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
}
但这次它显示了此执行:“FromSql”操作的结果中不存在所需的列“ID”。
我知道我必须将 ID
添加到我的数据库响应中,但我不能这样做,因为我的数据库中有很多过程,所以我无法编辑所有这些过程。
因此,我正在寻找一种无需编辑程序即可解决问题的方法。
有人可以帮助我吗?!
最佳答案
如果您使用的是 Entity Framework Core 2.x,请查看查询类型 ( https://learn.microsoft.com/en-us/ef/core/modeling/query-types )。 表(实体类型)始终需要 ID,而查询类型则不需要。
对于查询类型,您可以省略 ID。否则,您必须确保您的存储过程也返回一个 ID,因为表/实体类型始终需要一个 ID。
从 EF Core 3.0 开始,使用 .HasNoKey() 而不是查询类型来定义没有 ID 的实体 ( https://learn.microsoft.com/de-de/ef/core/what-is-new/ef-core-3.0/breaking-changes#query-types-are-consolidated-with-entity-types )。
关于c# - EFcore 中 'id' 操作的结果中不存在所需的列 `FromSql`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56040929/