代码之家  ›  专栏  ›  技术社区  ›  Ash Machine

NET和SQL Server中的对象持久性,值不完整

  •  0
  • Ash Machine  · 技术社区  · 14 年前

    会话级持久性不是一个选项,因为他们可以在中途保存表单,关闭浏览器,并在以后检索部分填充的表单。

    表单字段映射到DB表,每个表单都是DB行,但是需要几个字段,并且在DB中设置为不可为null。我想提供不完全保存数据值的能力。

    在对象处于不完整状态时,最好的保存方法是什么?然后,当用户提交表单时,提交经过验证的完整对象。

    NHibernate也不是一个选择。

    有什么好主意都可以。

    3 回复  |  直到 14 年前
        1
  •  0
  •   StingyJack    14 年前
    • 如果你想让他们负责,你可以把它塞进cookie(或者表单auth ticket data)中
        2
  •  1
  •   Conrad Frix    14 年前

    在我看来,你需要回答几个问题。

    1. 这些数据能保存多久。
    2. 用户如何“恢复”
    3. 你想把它放在哪里
    4. 部分数据的格式是什么。

    我肯定会考虑在会话结束时序列化数据并将其存储在数据库中。当用户返回时,您可以查找它并询问他们是否要继续。除#5外,这会处理以上所有问题。但是,无论何时更改对象模型,它都会产生与序列化数据的兼容性问题。

    我可能会选择的另一种方法是尽早询问所有需要的数据,然后您可以随时保存。

    另一种选择是简单地放宽不可为null的规则,然后您可以随时保存。

        3
  •  0
  •   eoldre    14 年前

    因为您希望人们能够继续填写他们离开的表单,即使他们离开网站或重新启动浏览器,也无法将部分完成的表单保存在ViewState或会话对象中。

    我认为最容易实现的两个想法是将所有部分完成的值存储在浏览器cookie中。或者更好的方法是(如果您对数据库有任何控制)在db中创建一个新表,其中的字段与form表几乎相同。将部分完成的表单中输入的值保存到该表中(称之为form\u Incomplete或其他什么),然后在用户完成最后一页的最后保存后才插入到表单表中。