Если вам требуется выполнить необработанный запрос в 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();
таким образом, вы можете получить доступили установите свою пользовательскую модель и выполните запрос или хранимую процедуру.
Дайте мне знать, требуйте больше информации.