如何编写特定于已登录用户的对象

本文关键字:登录 用户 对象 何编写 | 更新日期: 2023-09-27 18:12:44

我正在编写一个c# MVC5互联网应用程序,我对模型结构有一个问题。

我想要一个用户注册,一旦注册,用户可以创建一些MapLocation对象。因为每个MapLocation对象都属于一个用户,所以我希望能够找到一个用户创建的所有MapLocation,那么如何编写模型呢?

我正在考虑两种情况,但这两种情况都不可能是正确的。

场景1:

我编写了一个UserInfo类,并在用户注册时将其添加到ApplicationUser类。这个UserInfo类有一个地图位置列表。每当创建了一个MapLocation,它就会被添加到特定用户的UserInfo类中的MapLocation列表中。

场景2:

在MapLocation对象中有一个字符串变量,用于存储登录的用户名。每当我创建一个MapLocation对象时,登录的用户名就被添加到这个MapLocation对象中。然后,我可以根据字符串变量搜索malocations。

上述任何一种情况都可以吗?有更好的方法吗?是否有一种特定的设计模式可以满足这种情况?

Thanks in advance

如何编写特定于已登录用户的对象

我选择前者,从面向对象的角度来看,这似乎是更好的选择。我根本不想让一个MapLocation对象知道一个用户。或者我将创建一个MapLocationManager,它内部持有一个LookUp映射UserId到他创建的maploclocations列表,这样我就可以消除ApplicationUser负责管理MapLocations,这可能会导致您将ApplicationUser类移动到代码中需要访问那些MapLocations的所有地方。

看到你对Yuval的回答的"评论",这里是第三种解决方案,如果将数据放到数据库/服务器上可能会更好。

Class UserInfo - Credentials/Login Info - Preferences
private list<int> _ownedMapLocations;

MapLocationClass

Class MapLocations 
private int _id;

键的数据库概念,将允许您在数据库中正确/有效地存储它们(规范化)。对于"用户"来说,它也可以很容易地共享它的MapLocation,或者将其他人复制到他自己的集合中。