我有一个使用Entity Framework 4的MVC4应用程序,它使用了存储库模式。一旦用户登录后,他们可以在数据库层上执行CRUD操作,并且所有信息都被保存并链接到特定用户。现在我也想让这些功能可供未登录的用户使用,以便他们可以尝试应用程序。一旦他们决定订阅,我想保存他们在尝试中创建的数据,就像数据库中登录的用户一样。如何存储每个会话未登录用户的数据?
该应用程序的设置是将实体框架数据库上下文抽象为IContext
后面。这意味着可以使用IContext的另一个实现。我使用Autofac作为DI容器。 (如果您觉得您需要更多关于安装的信息,所有代码可以在here找到)。
我正在寻找一种实现试用功能的好方法。我想到的是:
- 每个用户使用一个“内存”数据库,但我认为这可能会占用太多的内存太多的用户存在。
- 另一个想法是将数据存储在客户端(JavaScript)中并在注册后保存所有信息,但这似乎需要大量重写,并且所有C#逻辑都需要转换为JavaScript并一起维护(一旦C#发生更改, JavaScript必须改变)。
- 保存数据库中的数据以获得特定于会话的随机
UserId
,但是一旦用户注销,请删除与“UserId”相关的所有数据。
也许有更好的方法。我希望如果你有一个实现尝试功能的好主意,你会愿意与我分享。
在此先感谢。
您可以使用其他数据库?如果是的话,你可以创建另一个数据库'可播放',因为这个数据库不是针对实际用户的。如果开始占用大量内存可以回滚。如果用户想要注册,则可以在实际数据库中移动他的数据。 – adricadar
我刚刚为我正在开发的应用程序提供了第三个选项,我认为它是一个不错的选择,因为它不会增加额外开销。 – martinoss
@adricadar,是的,我可以使用另一个数据库!然后为未登录的用户使用不同的上下文(使用另一个连接字符串),并有另一个服务和逻辑的实现,这取决于登录的用户? :-)听起来像是一种方式。谢谢。 –