关于Entity Framework的问题,同一个实体的2个属性同时是另外同一个实体的主键

huangbochn 2018-01-22 03:46:12
当然,我必须承认我这个还是数据库思维在做.

这个Authorization表的本意是控制单据权限,单据的创建人Master,可以授权其他用户Slave访问Master所创建的单据.
单据的所有人和被授权的可访问用户都是User表的主键Id.

这样合理吗?会不会有什么问题呢?或者说应该有更好的解决办法?


public class Authorization
{
[Key, ReadOnly(true), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

[Index, Display(Name = "所有人")]
public int Master { get; set; }
[Index, Display(Name = "用户")]
public int Slave { get; set; }
[Index, Display(Name = "类别")]
public int TypeId { get; set; }
[Index, Display(Name = "权限")]
public int PermissionId { get; set; }

[Browsable(false), ForeignKey("Master")]
public virtual User MasterUser { get; set; }
[Browsable(false), ForeignKey("Slave")]
public virtual User SlaveUser { get; set; }
[Browsable(false), ForeignKey("PermissionId")]
public virtual Permission Permission { get; set; }
[Browsable(false), ForeignKey("TypeId")]
public virtual AuthorizationType AuthorizationType { get; set; }
}
...全文
546 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangbochn 2018-02-01
  • 打赏
  • 举报
回复
自己再顶一次 然后就准备结贴了
huangbochn 2018-01-30
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
创建一个单据与授权人对应的中间表,从这个表中取判断访问权限。
因为单据是动态,随时会创建和删除.所以,我觉得对单据本身授权就会比较麻烦了.而且,单据的所有人比如离职,那可能会修改所有人.所以,我觉得创建单据的权限表可能就不是很合适了. 我不知道我有没有理解错您的意思.
exception92 2018-01-30
  • 打赏
  • 举报
回复
创建一个单据与授权人对应的中间表,从这个表中取判断访问权限。
huangbochn 2018-01-30
  • 打赏
  • 举报
回复
自己顶一下

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧