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

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

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

相关文章:

c# - Entity Framework +LINQ表达式外连接错误

c# - 如何调用异步 Task<bool> 方法?

.net - 如何在 "headless"构建服务器上构建 SSDT 项目?

c# - 提取 .zip 存档的最快方法

c# - 在 sql for asp.net gridview 中使用 ROW_NUMBER() 自定义分页

mysql - SQL选择2个表

c# - 如何仅选择一列以返回linq中的对象

c# - Entity Framework 如何识别我的 View 模型并绑定(bind)到我的域模型的属性?

c# - ASP .Net MVC 用户所有权和授权

c# - 如何制作 "as Class",其中 Class 是字符串名称?