ASP.NET核心 - 在整个应用程序中保持模型的最佳方法是什么?

时间:2016-07-19 17:12:04

标签: c# asp.net .net asp.net-mvc entity-framework

首先,我有一个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的Create页面。用户填写客户信息表,保存,然后定向到InputData的Create页面,保存,重定向到另一个视图,等等。在发生这种情况时,我需要跟踪所有这些属于的“配置文件”。

我考虑使用会话来存储它,但我知道这有一些缺点,特别是如果多个服务器正在处理请求 - 会话丢失等等。

对于这样的事情,什么是更好的解决方案/最佳实践?

编辑:我应该注意到我现在正在使用数据库来存储这些数据。因此,对于此示例,我有一个“配置”表,其中分别包含CustomerInfo表和InputData表的外键。

1 个答案:

答案 0 :(得分:0)

我们已将会话用于特定于用户的数据。由于我们的应用程序是单个服务器(或在具有粘性会话的多服务器方案中),因此会话可以正常工作。为此,您需要评估您的情况。您是否肯定使用多服务器,Web场或单个服务器等进行适当规划。

另一种方法是使用身份验证cookie存储最少的用户信息(您可以存储其他数据,如用户ID),然后从cookie中读取它并在回发时或从数据库请求时重新加载。我建议只存储特定于用户的内容(如ID),而不是尝试将所有配置文件数据存储在cookie中。