【问题标题】:How to get data as DataSet from stored procedure in Entity Framework如何从实体框架中的存储过程中获取数据作为 DataSet
【发布时间】:2013-08-16 12:53:07
【问题描述】:

我在 asp.net 中使用实体框架。

我将我的数据库和存储过程添加到 ADO.net 实体数据模型中。

我想从作为 DataTable 预处理的存储过程中获取数据。我创建了函数导入。

我这样称呼它

DataTable user= db.f_GetbyUser((Guid)User.UserId);

但有错误,它说

无法将类型“System.Data.Objects.ObjectResult”隐式转换为“System.Data.DataSet”

那么你能告诉我如何运行存储过程并将数据作为数据集获取

【问题讨论】:

  • EntityFramework 是一个 ORM,即将数据映射到强类型对象/集合,而不是 DataSet。
  • this question 可能会提供更多信息
  • EF的整个摆脱使用数据集和数据表的列/行模型,而是使用适当的对象及其集合....

标签: c# asp.net entity-framework


【解决方案1】:

没有直接转换。您必须在循环中手动循环通过结果和填充数据表/数据集,或者使用相同的连接但在真实的 ADO.NET 命令对象/适配器对象中填充数据集。

但是,如果您确实使用 EF,那么您不应该真的需要 EF 项目中的数据集 - 使用它为您生成的强类型。

【讨论】:

  • 理论上是对的,但实际这样做就大错特错了
  • 在EF项目中使用无类型数据表是错误的,你必须使用错误的方法来获得错误的结果:)
【解决方案2】:

你在这里混合技术。正如@yuriy-galanter 所说,如果您自己将数据破解到 DataSet / DataTable 中,在技术上是可行的,但您需要重新考虑您的数据访问方法并选择 DataSet、EF(或更好的东西)。

More information

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多