我有一些要转换的代码。我不再有这些 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/