【问题标题】:ASP.NET GridView with Self-Tracking Entities具有自跟踪实体的 ASP.NET GridView
【发布时间】:2011-07-12 21:15:56
【问题描述】:

我的 STE 工作得很好,并且可以使用 web 表单上的文本框、备忘录等单独的控件来跟踪更改,除非与 asp.net gridview 一起使用。在更新时使用 Gridview,它始终显示“已添加”作为 STE 的状态。

有人能解决我的问题吗?

【问题讨论】:

  • 请求之间的这些 STE 存储在哪里?
  • 我使用 Objectdatasource 作为网格的源。

标签: asp.net entity-framework-4 webforms self-tracking-entities


【解决方案1】:

是的,因为传递给更新方法的对象不是从数据库中查询的,而是实例化的。您可以做的是将实体附加到上下文。这将解决此问题。

HTH。

【讨论】:

    【解决方案2】:

    GridView 或 ObjectDataSource 都不会在请求中保留实体。当您在 GridView 上触发数据修改事件时,将为您创建一个新的对象实例。它与您用于填充网格的实体不同 - 那些实例已丢失。

    顺便说一句。在 Web 应用程序中使用 STE 并在请求中存储实体可能是我能想象到的最糟糕的用法。每个人都在尝试减少他们在 Web 应用程序中的内存占用以及客户端和服务器之间传输的数据量,而你正朝着完全相反的方向前进。

    【讨论】:

    • 什么问题?你没有提到任何问题。
    • @Ladislav,除非您尝试编写代码,以便使用 STE 轻松将其更新为真正的服务层。您的建议是避免使用 STE,但是如果您要在业务层之上分层 WCF 并想要 STE 功能,那么您将不得不返回并重写您将附加实体等的一些数据访问. 你不同意吗?
    • 您提到在这种情况下使用 STE 通常是个坏主意。你会用什么代替?
    • @Martin:我会使用 POCO - 您从请求中创建实体,然后将其作为更新的或新的传递。
    • @e36M3:是的,我建议avoiding STEs。我相信 WCF 超出了这个问题的范围,即使不是,在您使用它之前,STE 仍然是 you should consider twice。特别是如果您不使用需要跟踪关系变化的实体图,则不需要它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多