我有这个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查询加载所有记录?