【问题标题】:Entity Framework 4 merge changes between two EntitiesEntity Framework 4 合并两个实体之间的更改
【发布时间】:2011-02-08 20:13:28
【问题描述】:

我在 ASP.NET 应用程序中使用 ObjectDataSource。

使用 ASPxGridView。更新时它返回数据访问层并尝试更新实体,现在我可以看到当实体到达更新方法时具有一些属性(列,可见 = 假),可见 = 假列没有值。

我不想显示所有列...如果我需要 30 列中的 3 列怎么办?所以我想我会从上下文中获取原始实体并合并与更新实体的差异。

知道这是否可以使用实体框架发生吗?或任何() :)

谢谢

【问题讨论】:

    标签: asp.net c#-4.0 entity-framework-4 objectdatasource


    【解决方案1】:

    您正在使用分离的实体并且只修改选定的属性 => 您是唯一知道哪些属性被修改的人,您必须编写代码将这些属性中的值复制到更新的实体。更新选定属性有不同的方法 - 您可以使用 simple approach 或构建 repository

    编辑:

    如果您想在ObjectDataSource 上调用更新时获取整个对象,您必须将整个对象传递给网格(给客户端)。这意味着您已将所有对象属性绑定到某些控件。简单的方法是使用HiddenField 控件。但是在隐藏字段的情况下,您不能确定用户不会修改发布的值,这会导致不需要的更新。例如,假设您将产品价格发布到隐藏字段中。如果用户使用某些工具拦截请求并更改价格,您会将其更新到您的数据库中!

    另一种方法是创建您的自定义 Web 控件,它将值存储在 ViewState 中,而不是普通的隐藏输入。

    【讨论】:

    • 我认为现在最好和最有效的方法应该是获取网格行的整个数据源对象,这至少应该自动发生。因此,您按下 update 并且 ObjectDataSource 转到 Update(T entity) 传递整个 T 对象....这应该是最简单的 :) 我该怎么做?有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多