gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 15:00:02 25 4
gpt4 key购买 nike

我在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com