我使用Entity Framework EntityConnection手动调用存储过程,如下所示:
DbConnection storeConnection = entityConnection.StoreConnection;
DbCommand command = storeConnection.CreateCommand();
command.CommandText = "sp_GetMyComplexData";
command.CommandType = CommandType.StoredProcedure;
DbDataReader reader = command.ExecuteReader();
原因是实体框架不容易支持不直接映射到表或视图的实体。我发现了这篇文章(http://dotnet.dzone.com/news/mapping-stored-procedure),但它需要编辑XML,我想避免这种情况。
在我的情况下,我只是运行一个使用LEFT JOIN连接两个表的查询。这是因为我试图将结果绑定到Telerik RadGrid,它不支持分层数据导出,但似乎支持分组数据导出。
问题是,如何将DbDataReader对象转换为可以绑定到RadGrid的有用的东西?我一直在DAL方法中传递单个对象或IQueryable对象。有任何想法吗?提前谢谢?
修改
我只需要数据。之后我不需要进行任何插入,更新和删除操作。它是一个只读视图。
答案 0 :(得分:1)
我不了解RadGrid,但您可以将该datareader绑定到GridView等内置网格控件。您无法将其用于更新,删除或插入。
否则,您可以使用数据表的.Load()方法将其转换为数据表。但是你仍然需要知道如何手动插入/更新/删除。