我有一个待办事项协作网络应用程序。任务的所有者添加可以编辑该任务的用户。在内部数据库中,我有一个主表,用于创建用户id的所有任务,第二个表映射其他用户的任务,即TaskId,UserId,OwnerId。
在c#中,我通过实体框架检索记录。为了检查用户是否有权访问所请求的任务,我查询具有CreateUserId等于currentUserId的任务或任务映射表具有userId等于所述任务的CurrentUserId。请参阅下面的实际查询:
var userId = User.Identity.GetUserId<int>();
var task = db.TblTasks
.SingleOrDefault(x => x.Id == model.Id &&
(x.UserId == userId || x.TaskMembers
.Any(i => i.TaskId == x.Id && i.UserId == userId && i.Approved == true)
));
虽然这有效,但我不确定我的数据库设计或C#逻辑是否正确处理这种工作性质。如果我可以进一步改进或者可以实施任何其他最佳实践或专业方法,请告诉我