【问题标题】:Migrate to Entity Framework, use of datatables and stored procedures迁移到实体框架,使用数据表和存储过程
【发布时间】:2015-02-16 15:42:54
【问题描述】:

我正在重建支持 ado.net 的网站以使用实体框架。

目前我有一个存储过程返回我存储在数据表中的地址详细信息。像这样简化的列分解,查询返回多行。实际上,我返回了大约 15 列,通常是 2-3 行。

  • 地址ID
  • 家号
  • 街道
  • 小镇
  • 城市
  • YearsAtAddress
  • MonthsAtAddress

在应用程序代码中,我然后转置数据表中的行和列,然后绑定到网格视图。当它显示在屏幕上时,我的列从上到下排列,返回的每一行在屏幕上从左到右排列。

这给了我两个有用的好处

  1. 我可以轻松更改存储过程以添加/删除数据列,应用程序代码动态处理新数据,只需在列表底部添加/删除项目
  2. 我得到的行数永远不会超过页面宽度所能处理的,但它足够灵活,可以很好地处理单个或多个地址。

无论如何我可以使用实体框架复制它吗?我还想继续用数据表但是网上查的不多,我猜混合EF和ADO.Net可能不是最好的?

由于返回的 EF 是一个强类型对象,我希望避免必须有大量标签来手动显示每个对象属性,而是希望绑定的 gridview 动态地完成艰苦的工作。

谢谢

【问题讨论】:

  • EF 的全部意义 是您不再需要处理无类型的行和列,但是您的关系模型会被翻译改为漂亮、有用的 .NET 对象(以及此类对象的集合)。
  • 您能否指出我正在尝试做的事情的正确方向?我毫不怀疑 EF 是要走的路,我希望能解决我的问题。他们这次似乎遇到的关键问题是将 X by Y 数据集交换为 Y by X 数据集并将其绑定到 gridview。如果我不转置我的数据,我会得到一个非常宽但非常短的数据网格,这是我无法拥有的。

标签: .net entity-framework stored-procedures datatable


【解决方案1】:

您可以在返回结果集之前使用PIVOT 在存储过程中进行行/列转置。这确实意味着您需要在 sproc 更改时更改 PIVOT 代码。

如果您想这样做,只保留 ADO.NET 也没有错。如果您使用的是存储过程,那么您已经超出了“纯”EF 的范围,这很好。它使应用程序的便携性稍差一些,但您仍然可以获得使用 EF 的大部分优势。

【讨论】:

    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2013-03-19
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    相关资源
    最近更新 更多