【发布时间】:2016-07-19 17:12:03
【问题描述】:
首先,我有一个 ASP.NET MVC Core 应用程序,它充当用户登录的向导,并开始构建数据的“配置”。本质上,当用户浏览每个页面时,他们正在为这个“配置”配置/添加不同的数据。当他们浏览这些页面时,配置会一路保存。我遇到的问题是想出一个很好的解决方案来保存配置进度并将其保留在整个应用程序中。这是我的几个模型的一个非常简化的版本以及我正在做的事情(没有涉及太多领域细节):
public class Configuration
{
string ConfigName;
CustomerInfo CustomerInfo;
InputData Input;
}
public class CustomerInfo
{
string CustomerName;
string Company;
string PhoneNumber;
}
public class InputData
{
int SomeNumber;
int SomeOtherInput;
int AnotherNumber;
}
因此,在这种情况下,我基本上有一个 CustomerInfo 的创建页面。用户填写客户信息表单并保存,然后被定向到 InputData 的 Create 页面,保存它,被重定向到另一个视图,等等。在发生这种情况时,我需要跟踪所有这些都属于的“个人资料”。
我考虑过使用 Session 来存储它,但我知道这样做的一些缺点,特别是如果多个服务器正在处理请求 - 会话丢失等。
对于这样的事情,什么是更好的解决方案/最佳实践?
编辑:我应该注意我现在正在使用数据库来存储这些数据。所以对于这个例子,我有一个“配置”表,它分别包含一个 CustomerInfo 表和一个 InputData 表的外键。
【问题讨论】:
-
您没有在帖子中提到考虑使用数据库。您对此有何反对意见?
-
我编辑了我的帖子,提到我正在使用数据库。我可以将 InputData 保存到其各自的表中,但我需要一种将保存的 InputData 与正在配置的当前配置文件相关联的方法。
-
我会使用数据库在可能的许多服务器上保持会话。或者更好的是,一个配置文件表,这样您就可以为用户提供一个 profileId,然后您将使用它来关联数据的其他部分......
-
InputData 通过表中的外键与配置文件相关联。当用户登录时,会话会跟踪您的身份 - 换句话说,它将个人资料与您当前的会话相关联。
-
我再次编辑了我的帖子。我认为“个人资料”一词的使用有点误导。在我的情况下,个人资料不是实际的用户个人资料。相反,它是一堆不同数据的模型。
标签: c# asp.net .net asp.net-mvc entity-framework