当 ObjectResult 不再存在时将 EF 6 转换为 .net Core

Convert EF 6 to .net Core when ObjectResult does not exist anymore

我需要从 EF6 转换为 .net core 2。2.x 我一直在搜索,但我不知道如何从可能的 EDMX 转换某些代码

我需要转换的示例

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);
    }

通常我会像这样创建一个 dbcontext 文件

public Clinical_CaseTrakker_Context(DbContextOptions<Clinical_CaseTrakker_Context> options) : base(options)
    { }

然后我像

那样做 dbset
 public DbSet<USP_Get_SAI> USP_Get_SAIs { get; set; }

但是这整个 ObjectResult<T> 我从未与

合作过

通常我会像这样调用存储过程

List<OfflineMember> offLine = await _CaseTrakker_Context.OfflineMembers.FromSql("EXECUTE CT.usp_Get_SAI_Offline_Members {0}", userId).ToListAsync();

你可以使用 FromSqlRaw 吗?


var blogs = context.Blogs
    .FromSqlRaw("EXECUTE dbo.GetMostPopularBlogs")
    .ToList();

FromSqlRaw allows you to use named parameters in the SQL query string, which is useful when a stored procedure has optional parameters:

var user = new SqlParameter("user", "johndoe");

var blogs = context.Blogs
    .FromSqlRaw("EXECUTE dbo.GetMostPopularBlogsForUser @filterByUser=@user", user)
    .ToList();

EF Core 仍然支持下面的语法,只是对 Task<> 进行了下面的小改动:

Task<List<OfflineMember>> offLine = await _CaseTrakker_Context.OfflineMembers.FromSql("EXECUTE CT.usp_Get_SAI_Offline_Members {0}", userId).ToListAsync();

List<OfflineMember> offLine = _CaseTrakker_Context.OfflineMembers.FromSql("EXECUTE CT.usp_Get_SAI_Offline_Members {0}", userId).ToList();