我正在编写C#MVC5互联网应用程序,我对模型结构有疑问。
我希望用户注册,一旦注册,用户就可以创建一些MapLocation对象。因为每个MapLocation对象都属于一个用户,所以我希望能够找到用户创建的所有MapLocations,如何对模型进行编码?
我在想两个screnarios,但其中任何一个都不正确。
情景1:
我编写UserInfo类,并在用户注册时将其添加到ApplicationUser类。此UserInfo类具有MapLocations列表。每当创建MapLocation时,它都会被添加到特定用户的UserInfo类中的MapLocations列表中。
情景2:
我在MapLocation对象中有一个字符串变量,用于存储登录用户的名称。每当我创建MapLocation对象时,登录用户的名称都会添加到此MapLocation对象中。然后,我可以根据字符串变量搜索MapLocations。
上述任何一种情况都与之相关吗?有一个更好的方法吗?是否有适合这种情况的特定设计模式?
提前致谢
答案 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或将其他人复制到他自己的集合中。