我在ASP.NET应用程序中使用ObjectDataSource。
使用ASPxGridView。当更新它回到数据访问层并尝试更新实体时,现在正如我所看到的那样,当实体到达更新方法时,有一些属性(列,可见=假),visible = false列没有值。
我不想显示所有列...如果我需要30列中的3列怎么办?所以我想我会从上下文中获取原始实体并合并更新实体的差异。
是否有可能使用实体框架发生这种情况?或任何():)
谢谢
答案 0 :(得分:1)
您正在使用分离的实体,并且只修改了选定的属性=>您是唯一知道修改了哪些属性的人,您必须编写代码以将值从这些属性复制到更新的实体。更新所选属性的方法有多种 - 您可以使用simple approach,也可以构建repository。
修改强>
如果要在ObjectDataSource
上调用update时获取整个对象,则必须将整个对象传递给网格(到客户端)。这意味着您已将所有对象属性绑定到某些控件。简单的方法是使用HiddenField
控件。但是在隐藏字段的情况下,您无法确定用户是否会修改发布的值,从而导致不必要的更新。例如,假设您将产品价格发布到隐藏字段中。如果用户使用某个工具拦截请求并更改价格,您将把它更新到您的数据库中!
另一种方法是创建自定义Web控件,该控件将值存储在ViewState
中,而不是普通的隐藏输入。