我的原帖:https://dev59.com/Fl4b5IYBdhLWcg3w3k-Y#57224037
要调用存储过程并将结果放入 EF Core 的模型列表中,我们需要遵循 3 个步骤。
第一步。您需要添加一个新类,就像您的实体类一样。该类应具有与 SP 中所有列对应的属性。例如,如果您的 SP 返回名为 Id
和 Name
的两个列,则您的新类应该是:
public class MySPModel
{
public int Id {get; set;}
public string Name {get; set;}
}
第二步。
接下来,您需要在您的DBContext类中添加一个DbQuery
属性用于您的存储过程。
public partial class Sonar_Health_AppointmentsContext : DbContext
{
public virtual DbSet<Booking> Booking { get; set; }
...
public virtual DbQuery<MySPModel> MySP { get; set; }
...
}
第三步
现在,您将能够从您的DBContext调用并获取您的SP的结果。
var result = await _context.Query<MySPModel>().AsNoTracking().FromSql(string.Format("EXEC {0} {1}", functionName, parameter)).ToListAsync();
我正在使用通用的UnitOfWork & Repository。 因此,我的执行SP的函数是
public async Task<IEnumerable<T>> ExecuteFuntion<T>(string functionName, string parameter) where T : class
{
return await _context.Query<T>().AsNoTracking().FromSql(string.Format("EXEC {0} {1}", functionName, parameter)).ToListAsync();
}
希望这对某人有所帮助!!!