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

标签 c# entity-framework asp.net-core .net-core ef-core-2.0

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

相关文章:

c# - 如何使用 NewtonSoft Json 序列化 FileInfo 对象?

c# - EF是否从Db中获取所有数据然后进行过滤?

c# - 聚合包含表达式上的 Entity Framework "Code supposed to be unreachable"

c# - 如何在页面上旋转 gridview?

c# - 使用 ProcessInfo 用户名和密码调用 wkhtmltopdf 时无法读取 StandardOutput

c# - mscorlib.dll 命名空间在 Windows Phone 8.1 XAML 中不起作用

.net - 与 http ://doubleclick. 处的资源关联的 cookie net/was set with `SameSite=None` 但没有 `Secure` 。 Chrome 的 future 版本

c# - 使用 Entity Framework 删除数据库

c# - 如何使用 razor 页面在 ASP.Net Core 上将对象从一个页面传递到另一个页面?

docker - dotnet 发布后在 docker 镜像中找不到 Application Insights 依赖项