Как выполнить SQL-запрос в новой базе данных? - PullRequest
0 голосов
/ 19 апреля 2019

Моя проблема заключается в следующем ... Я создаю программное обеспечение, в котором у вас есть различные области бизнеса, и у этих областей есть свойство ConnectionString.

Поэтому, когда администратор системы хочет узнать определенную информацию о области, все, что он делает, это регистрирует запрос SQL.

Моя проблема в логике того, как выполнить запрос. Я создаю новый DbContext и передаю строку подключения, но не могу найти функцию DbContext для выполнения запроса.

Кто-нибудь знает какую-либо функцию DbContext для запуска запроса и получения результата?

1 Ответ

2 голосов
/ 19 апреля 2019

Если вам требуется выполнить необработанный запрос в Entity Framework Core с использованием объекта DbContext, вы можете получить доступ как

Для доступа к необработанному запросу

var students = context.Students
    .FromSql("SELECT * FROM dbo.Students Where id = 1")
    .ToList();

Если вам требуется доступ или получение данныхиз хранимой процедуры:

var students = context.Students
    .FromSql("EXECUTE dbo.GetTopperStudents")
    .ToList();

если передать с параметром, то

var name = new SqlParameter("name", "abc");   
var students = context.Students
            .FromSql("EXECUTE dbo.GetTopperStudents @name",name )
            .ToList();

, если выполнить команду вставки / обновления / удаления, тогда

 var commandText = "INSERT Students (name) VALUES (@name)";
    var name = new SqlParameter("@name", "Test");
    context.Database.ExecuteSqlCommand(commandText, name);

, если вы выполняетезапрос или хранимая процедура не в вашей модели, или вы добавляете пользовательскую модель, тогда вы можете выполнить как запрос, например,

my studentFees Model - это не модель, связанная с базой данных.

public class StudentFees
{
      public int StudentId { get; set; }
      public string StudentName { get; set; }
      public decimal Fees { get; set; }
      public DateTime FeesDate { get; set; }
}

, и просто добавьте своюзапросите в вашем DbContext OnModelCreating() методе

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
      modelBuilder.Query<StudentFees>();
}

сейчас, если вы можете получить доступ и выполнить свой запрос или хранимую процедуру в пользовательской модели

var studentId = new System.Data.SqlClient.SqlParameter("@studentId", 1);
        var studentsFees = _dbContext.Query<StudentFees>("GetStudentFees @studentId", studentId).ToList();

таким образом, вы можете получить доступили установите свою пользовательскую модель и выполните запрос или хранимую процедуру.

Дайте мне знать, требуйте больше информации.

...