繁体   English   中英

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

[英]How to code an object that is specific to a logged in user

我正在编写C#MVC5 Internet应用程序,并且对模型结构有疑问。

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

我正在考虑两个场景,但是这两个都不正确。

方案1:

我编写了UserInfo类,并在用户注册时将其添加到ApplicationUser类。 该UserInfo类具有MapLocations列表。 每当创建MapLocation时,就会将其添加到特定用户的UserInfo类中的MapLocations列表中。

方案2:

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

以上两种情况都适合吗? 有一个更好的方法吗? 有没有适合这种情况的特定设计模式?

提前致谢

我同意前者,从OOP的角度来看,IMO似乎是更好的选择。 我根本不想让MapLocation对象知道用户。 或者,我将创建一个MapLocationManager,该内部保留一个LookUp ,该LookUp将UserId映射到他创建的MapLocations列表,这样我就可以摆脱ApplicationUser的管理MapLocations的职责,这可能会导致您将ApplicationUser类移至所有在您的代码中放置访问这些MapLocations的需求。

在Yuval的答案中看到您的“评论”,这是第三种解决方案,如果将数据存储到数据库/服务器中,可能会更好。

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

MapLocationClass

Class MapLocations 
private int _id;

数据库的密钥概念使您可以正确/有效地将其存储在数据库中(规范化)。 “用户”也可以轻松共享它的MapLocation或将其他人复制到自己的集合中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM