c# - 如何建模这种关系
问题描述
我正在创建一个消息应用程序,用户必须能够添加联系人。联系人是一对两个用户。
第一个问题:
我的 User 类中有以下属性:
Guid AccountId { get; set; }
string Name { get; set; }
List<Contact> Contacts { get; set; }
List<Chat> Chats { get; set; }
现在我想为 Contact 类建模,这就是我想出的:
Guid ContactId { get; set; }
string Name { get; set; }
User UserA { get; set; }
User UserB { get; set; }
我对 Contact 类的问题是每个用户都有一个联系人列表。通过此联系人,一个用户可以访问另一个用户的联系人和聊天。
这是一个有效的担忧吗?如果是这样,我该如何防止这种行为发生?
第二个问题:
如何以更具描述性的方式命名 UserA 和 UserB?用字母或数字来数东西感觉很脏。
解决方案
您的 Contacts 类创建了一个循环引用问题,我不鼓励这样做。Contact 类不需要具有 UserA 和 UserB 属性。Contact 类只负责处理 Contact 数据:
- 帐户ID
- 姓名
- 姓
- 昵称
- 被列入黑名单
在这种情况下,您的第二个问题不再相关,并且您已强制执行责任。
推荐阅读
- server - Zenko云服务器的配置
- python - 为什么 contextlib.redirect_stderr 上下文管理器没有捕获异常输出?
- typescript - 获取传入 props 的组件的 props 类型
- reactjs - FilePond:如果 allowBrowse 为 true,则在触发 onactivatefile 事件时始终显示文件打开对话框
- flutter - 使用 http Flutter 获取 API
- java - Android OpenGL:纹理和颜色问题
- jboss7.x - 摆脱 MANIFEST.MF 文件
- solidity - 如何查询RNS域名的到期日?
- django - Django 无法使用 pk MultiValueDictKeyError 以外的查询参数测试 API 补丁方法
- javascript - 在 Javascript 中设置交通灯的计时器