我试图让Entity Framework为自定义查询返回多个结果,然后将它映射回Entity Framework Code First模型。是否有可能使用Entity Framework的内部映射引擎?如何让实体框架映射DbDataReader?
我可以保证结果集中两个查询返回的行直接映射到EF模型。作为内部要求,我无法使用存储过程。
public void MultipleResultSets()
{
var db = new DbContext();
var command = db.Database.Connection.CreateCommand();
command.Connection.Open();
command.CommandText =
@"
SELECT * FROM TableA;
SELECT * FROM TableB;
";
using (var reader = command.ExecuteReader())
{
// Map Table A rows
var tableARows = new List<TableARow>();
while (reader.Read())
tableARows.Add(reader.Map<TablARow>()); // "Map()" is not real
reader.NextResult();
// Map Table B rows
var tableBRows = new List<TableBRow>();
while (reader.Read())
tableARows.Add(reader.Map<TablBRow>()); // "Map()" is not real
}
command.Connection.Close();
}
为什么你需要这个成为一个返回多个结果集而不是仅发送两个查询的查询? – Pawel
@Pawel,减少数据库往返次数。 – Omar
不知道它是否值得,但可以将每个结果集公开为DbDataReader并使用ObjectContext.Translate方法 – Pawel