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

时间:2014-07-13 07:29:32

标签: c# list design-patterns model asp.net-mvc-5

我正在编写C#MVC5互联网应用程序,我对模型结构有疑问。

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

我在想两个screnarios,但其中任何一个都不正确。

情景1:

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

情景2:

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

上述任何一种情况都与之相关吗?有一个更好的方法吗?是否有适合这种情况的特定设计模式?

提前致谢

2 个答案:

答案 0 :(得分:0)

我跟前者一样,从OOP的角度看IMO似乎是更好的选择。我不希望MapLocation对象完全知道用户。或者我会创建一个MapLocationManager,它在内部持有LookUp将UserId映射到他创建的MapLocations列表,这样我就可以避免ApplicationUser管理MapLocations,这可能会导致你移动ApplicationUser在代码中的所有位置都需要访问这些MapLocations。

答案 1 :(得分:0)

看到你的评论"在Yuval的回答中,这是第三种解决方案,在将数据传输到数据库/服务器上可能会更好。

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

MapLocationClass

Class MapLocations 
private int _id;

密钥的数据库概念,允许您在数据库中正确/有效地存储它们(规范化)。对于用户来说也是可能的。轻松地分享它的MapLocation或将其他人复制到他自己的集合中。