Преобразование EF 6 в .net Core, когда ObjectResult больше не существует - PullRequest
0 голосов
/ 24 октября 2019

Мне нужно конвертировать из EF6 в ядро ​​.net 2.2.x, и я искал, но я не вижу, как преобразовать часть этого кода из EDMX

Пример того, что мне нужноconvert

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> Iникогда не работал с

Обычно я просто вызываю хранимый процесс, как этот

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

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

EF Core по-прежнему поддерживает приведенный ниже синтаксис с незначительным изменением ниже на Задачу <>:

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();
0 голосов
/ 24 октября 2019

Не могли бы вы использовать FromSqlRaw ?


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

FromSqlRaw позволяет использовать именованные параметры в строке запроса SQL, что полезно, когда хранимая процедура имеет необязательные параметры:

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

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