.NET核心实体框架存储过程

DKh*_*naf 5 c# stored-procedures entity-framework-core asp.net-core

我正在尝试将ASP.NET 4.5应用程序移植到.NET Core,我有一个我似乎无法弄清楚的真正问题.

我现有的应用程序执行存储过程,返回带有多个数据表的数据集.实体框架可以自动将返回的字段映射到我的实体属性,但只能与数据集中的第一个数据表一起使用(自然).

所以我只想弄清楚它是否可能以某种方式拦截模型构建过程并使用自定义代码来处理数据集并查看其他数据表来设置实体字段.

我知道我可以直接使用正常的方式执行存储过程,SqlConnection但我想知道实体框架是否有某种方法可以做到这一点.

Mik*_*ind 11

目前,执行返回数据的存储过程DbSet.FromSql方法是使用该方法.

using (var context = new SampleContext())
{
    var data= context.MyEntity
        .FromSql("EXEC GetData")
        .ToList();
}
Run Code Online (Sandbox Code Playgroud)

这有一定的局限性:

  • 必须在a上调用它 DbSet
  • 返回的数据必须映射到该DbSet类型的所有属性
  • 它不支持ad hoc对象.

或者你可以回归到普通的ADO.NET:

using (var context = new SampleContext())
using (var command = context.Database.GetDbConnection().CreateCommand())
{
    command.CommandText = "GetData";
    command.CommandType = CommandType.StoredProcedure;
    context.Database.OpenConnection();
    using (var result = command.ExecuteReader())
    {
        // do something with result
    }
}
Run Code Online (Sandbox Code Playgroud)

计划在某个阶段引入对 SQL查询返回ad hoc类型的支持.