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

在ASP.NET向导控件中管理多对多关系

  •  1
  • Luis  · 技术社区  · 15 年前

    假设我有一个具有很多属性的实体。在输入表单中,我决定实现一个向导控件,这样我可以通过几个步骤收集有关此实体的信息。问题是,我需要收集已经建模的信息,这些信息具有多对多的关系。

    我计划使用Telerik GridView来管理这一点(添加/编辑/删除),问题在于,由于插入表单中的实体尚未在数据库上创建,所以我应该在哪里存储这些数据。好的,所以我可以将所有信息存储在视图状态中的临时列表中,等待最终提交,在这里我将所有信息转储到数据库中,但是我正在收集文件的其中一个步骤……现在在视图状态中存储文件是不可能的,与在会话中存储文件一样……

    我一直在考虑以一种方式实现,即用户必须先提交一些信息(比如前3个步骤),将数据提交到创建父实体的数据库,然后开始插入所有子实体……但这会变得很奇怪,因为在第一个步骤中,您没有将数据保存到数据库,而在接下来的步骤中,您需要直接重新提交…

    有人对此有什么想法吗?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  1
  •   Tod Birdsall    15 年前

    考虑在数据库中创建一个“holding”表,您可以在其中存储向导数据,而不是将其存储在viewstate中。该表可以有一个用户sessionid列,这样您就可以知道哪些记录属于哪些用户。用户完成向导步骤后,可以检索所有数据并将其提交到最终表。

    您还可能希望创建一个作业,通过删除超过n小时的记录来定期清理“保留”表,这样就不会累积孤立的记录。