我有一个表,其中包含各种对象/实体的用户权限,如下所示:
object_type //an enum referring the the type of object that this record applies to
object_id //the id of the object
user_id
can_edit
etc.
这与我项目中其他几个没有任何共同点的表有关(照片就是一个例子)。要获得对象的权限,我希望能够执行以下操作:
//get the first photo along with all of the user permissions related to it
context.Set<Photos>()
.Include(p=>p.UserPermissions)
.FirstOrDefault(p=>p.Id == 1)
如果需要,我可以重组数据库,所以我想在这里你认为最好的解决方案是。
答案 0 :(得分:2)
我会建议他们都有共同点。它们都是可以控制权限的资源。在这种情况下,“资源”是“照片”等的概括。或者,以对象类的形式表示,照片是资源的子类。
在这种情况下,我建议你的问题可能已被回答here。这是Bill Karwin的回答,它描述了几种设计继承类型情况的方法。它获得了很多选票。