使用存储过程作为DbSet.SqlQuery

时间:2016-03-06 11:50:14

标签: c# entity-framework entity-framework-6

我有这个C#代码,运行ef 6.1.1:

string query = string.Format("exec arch_SP_GeneraEstructuraPlano {0} ,@p_clausulaWhereAdicional = ' where NumIdLote = {1}',@p_GenerarRuta=0", IdEscenario, IdLote);

DbSet mov = db.Set(typeof(vw_InterfazContableMegasistemasMov));
List<vw_InterfazContableMegasistemasMov> Detalle =  new List<vw_InterfazContableMegasistemasMov>(mov.SqlQuery(query)
    .Cast<vw_InterfazContableMegasistemasMov>()
    .AsQueryable());

如果我在SQL Server中执行查询,它会返回n 唯一记录,但使用上面的代码会返回相同记录n次。

我正在使用DbSet转换,因为存储过程可能会根据场景变量返回不同的结构。

编辑1:搜索其他方法,找到了IObjectContextAdapter的翻译

这是我的代码它不起作用:(

db = new MyDbContext();
db.Database.Connection.Open();
var reader = cmd.ExecuteReader();
var data1 = ((IObjectContextAdapter)db)
    .ObjectContext
    .Translate<vw_InterfazContableMegasistemasMov>(reader, "vw_InterfazContableMegasistemasMov", MergeOption.AppendOnly)
    .AsQueryable();

如何强制DbSet查询加载所有记录?

0 个答案:

没有答案