Skip to main content
 首页 » 编程设计

c#之如何存储每个 session 未登录用户的数据

2024年06月20日34飞鱼

我有一个使用 Entity Framework 4 的 MVC4 应用程序,它使用了存储库模式。用户登录后,他们可以在数据库层上执行 CRUD 操作,并且所有信息都将保留并链接到特定用户。现在我还想让未登录的用户可以使用此功能,以便他们可以试用该应用程序。一旦他们决定订阅,我想保留他们在试用中创建的数据,就像数据库中的登录用户一样。

应用程序的设置是将 Entity Framework 数据库上下文抽象为 IContext。这意味着可以使用 IContext 的另一个实现。我使用 Autofac 作为 DI 容器。 (如果您觉得需要有关设置的更多信息,可以找到所有代码 here)。

我正在寻找一种实现试用功能的好方法。我想到的是:

  1. 为每个用户使用一个“内存中”数据库,但我认为一旦存在太多用户,这可能会占用太多内存。
  2. 另一个想法是将数据存储在客户端 (JavaScript) 并在注册后保存所有信息,但这似乎需要进行大量重写,并且所有 C# 逻辑都需要转换为 JavaScript 并一起维护(一旦 C# 更改, JavaScript 必须改变)。
  3. 在数据库中保存特定于 session 的随机 UserId 数据,但一旦用户注销,删除与“UserId”相关的所有数据。

也许有更好的方法。如果您对实现试用功能有好的想法,我希望您愿意与我分享。

提前致谢。

请您参考如下方法:

如果可以,请创建另一个数据库使其“可玩”,因为该数据库不适用于实际用户。如果开始占用太多内存,则可以毫无风险地回滚。当用户想要注册时,您可以将他的数据从该数据库移动到生产数据库。

注意:您不需要使用不同的上下文,或实现其他服务。您可以使用上下文的新实例,但使用不同的连接字符串。