Как выполнить sql процедуру как необработанный запрос в сущности framewrok core - PullRequest
0 голосов
/ 05 марта 2020

Что такое альтернатива для SqlQuery в EF Core2.0 Я не хочу создавать модель для выполнения процедуры

     var result =  _context.Database.SqlQuery<string>("TWS_config_MidOfficeSystems_Validate @mo,@ga,@pcc,@xmo",
                                   parameters: new SqlParameter[]
                                   {   new SqlParameter("@mo",lineData),
                                    new SqlParameter("@ga", gdsAccessId),
                                    new SqlParameter("@pcc", crsPCC),
                                    new SqlParameter("@xmo", bkMidOfficeCode),
                                   }).FirstOrDefaultAsync();

1 Ответ

0 голосов
/ 05 марта 2020

Поскольку EF Core тесно связан, вы должны создать class со свойствами, полученными из хранимой процедуры.

 public class ExampleClass
 {            
     public string Name { get; set; }
     public string Email { get; set; }            
 }

В ApplicationDbContext.cs добавьте этот класс как DbQuery

 public DbQuery<ExampleClass> ExampleClassDbQuery { get; set; }

Реализуйте Dependency Injection в controller или services

private readonly ApplicationDbContext _db;


    public ExampleService(ApplicationDbContext applicationDbContext)
    {
        _db = applicationDbContext;  
    }

Затем вызовите хранимую процедуру следующим образом:

_db.ExampleClassDbQuery.FromSql("storedProcedureName", []parameters);

Чтобы узнать больше о выполнении необработанных запросов с использованием FromSql, следуйте этому Документам Microsoft

...