gpt4 book ai didi

c# - 使用不存在的模型实体返回结果 - EF .net Core 3

转载 作者:行者123 更新时间:2023-12-01 21:41:47 26 4
gpt4 key购买 nike

我想通过 SP 为当前模型实体中实际上不存在的列返回结果。目前我只能返回当前模型之一的结果。

   [HttpGet]
public async Task<ActionResult> getAllSalaryRanks()
{
HttpResponseMessage response = new HttpResponseMessage();

using(db963Context context = new db963Context())
{
var ranks = context.IoVouchersSalaryRanks.FromSqlRaw("EXEC ioVouchers_sp_SalaryRanks").ToList();

return Ok(ranks);
}

}

在上面的示例中,我会得到一个异常:“FromSql”操作的结果中不存在所需的列“foo”。

基本上 IoVouchersSalaryRanks 是我的模型之一,因此结果的列应该与模型实体完全相同。如何添加自定义模型实体,以便 SP 返回与该自定义模型匹配的结果?

最佳答案

您的存储过程 ioVouchers_sp_SalaryRanks 必须返回一个可以映射到您的实体 IoVouchersSalaryRank 的结果

如果它返回一个自定义结果,你必须这样实现:

string query = "EXEC ioVouchers_sp_SalaryRanks";

var ranks = context.Set<CustomModel>().FromSqlRaw(query).ToList();

其中 CustomModel 是一个新实体,其中的属性可以映射到 SP 返回的列。所以,如果它只返回字符串类型的 foo 列,它看起来像这样:

public class CustomModel
{
public string Foo{ get; set; }
}

在 OnModelCreating 方法中将 CustomModel 添加到 dbcontext

        modelBuilder.Entity<CustomModel>().HasNoKey();

我有一篇博文对此进行了解释,你可以在这里看看>> https://mohamedsahbi.com/2019/05/22/raw-queries-with-entity-framework-core/

更新:我的博客与 EF Core 2.1 有关。因此,我刚刚更新了与 EF Core3.1 一起使用的答案。您还可以找到一个带有 EF Core 3.1 示例的 GitHub 存储库 https://github.com/MohamedSahbi/RawQueryWithEFCore/tree/master/SampleWithEFCore/SampleWithEFCore3.1

关于c# - 使用不存在的模型实体返回结果 - EF .net Core 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61253446/

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