代码之家  ›  专栏  ›  技术社区  ›  Damien

ORM-使用C保存/恢复数据库对象的默认值#

  •  0
  • Damien  · 技术社区  · 15 年前

    为了帮助用户重复输入数据,我尝试实现一个系统,在这个系统中,添加新数据时会记住许多以前的属性。

    是否可以使用properties.settings.default.mysetting功能,或者是否有更好的方法来执行此类操作?

    2 回复  |  直到 15 年前
        1
  •  0
  •   tpdi    15 年前

    你不能只复制前一个对象,并将其用作下一个对象,允许用户覆盖任何已更改的字段吗?这样,这些字段将是用户上次输入的字段,每个用户进行个性化,并在更改这些字段时进行更新。

    如果您有一种方法可以记住每个用户输入的最后一件事,那么您甚至可以在会话之间保存这一点。

    操作注释:

    不幸的是,当涉及到关系时,对对象进行深度复制会使对象上下文混乱。具有关系的新对象要么需要创建新的关系对象,要么需要从数据库查询现有对象。

    那么?如果关系是与另一个实体(数据库中的外键)的关系,那么它就是一个用途——一个关系,您只需保留它。如果它是一个属性,就复制它。

    例如,假设您的表单是有关员工的数据输入,我不知道,它是EmployeeType的下拉列表,可以是“豁免”(无加班)或“非豁免”(获得加班)。您从数据库中提取了EmployeeType的值,并希望输入的下一个员工与上次输入的员工具有相同的值,以保存人员按键的数据输入。因此,深度复制只会将复制的员工与相同的数据库employeetype相关联。

    但对于属性数据(如名称),您需要复制一份。

        2
  •  -1
  •   lomaxx    15 年前

    这取决于你想要达到的目标。使用mysetting功能的好处在于,下次关闭应用程序时,可以保留“最新”的属性。

    我假设这是一个WinForms应用程序,所以我可能会在哈希表的某个地方保存每个备份对象的最后一次保存的缓存实例,然后在创建新表单时,在哈希表中查找备份对象,并将所需属性绑定到表单的新实例。

    然后,如果愿意,您可以将整个哈希表序列化并持久化到mysettings对象,这样用户每次访问应用程序时都可以使用它。