gpt4 book ai didi

c# - 使用 ObjectResult 将 EF6 转换为 EF 核心

转载 作者:行者123 更新时间:2023-11-30 22:52:05 28 4
gpt4 key购买 nike

我有一些要转换的代码。我不再有这些 ObjectResult 和 ObjectContext 了

这就是我所拥有的:

public virtual ObjectResult<string> GetTransData(string iN_MEM_ID)
{
var iN_MEM_IDParameter = iN_MEM_ID != null ?
new ObjectParameter("IN_MEM_ID", iN_MEM_ID) :
new ObjectParameter("IN_MEM_ID", typeof(string));

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("GetTransData", iN_MEM_IDParameter);
}

因为我需要从调用方返回一个列表(它作为 json 数据发回)

这就是我要构建的

public virtual List<string> GetTransData(string iN_MEM_ID)
{
var iN_MEM_IDParameter = iN_MEM_ID != null ?
new SqlParameter("IN_MEM_ID", iN_MEM_ID) :
new SqlParameter("IN_MEM_ID", typeof(string));

Clinical_CaseTrakker_Context clinical = new Clinical_CaseTrakker_Context();


List<string> offLine = clinical.string.FromSql("EXECUTE CT.GetTransData {0}", iN_MEM_IDParameter);

return offLine;
}

请注意,我被 clinical.string 困住了,我不能那样做,但我不确定如何获取 dbcontext 实例并运行 FromSql 来执行 sql 并返回到列表

最佳答案

在 EF Core 中,无法使用 FromSql 方法直接从数据库返回属性子集(投影)。您需要为该类定义一些模型和 DbSet

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

然后在你的上下文中声明

public DbSet<Foo> Foos { get; set; }

并像这样使用它:

using (var context = new Clinical_CaseTrakker_Context())
{
var offLine = context.Foos
.FromSql($"EXECUTE CT.GetTransData {iN_MEM_IDParameter}")
.Select(x => x.Bar)
.ToList();

return offLine;
}

关于c# - 使用 ObjectResult 将 EF6 转换为 EF 核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58536207/

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