我已将默认的WebApi模板与个人授权一起用于我的项目。 我已成功注册帐户,并编辑了模型和控制器,以便UserName存储在用户名字段而不是电子邮件中,默认情况下就是这样。
我正在尝试使用以下模型创建Book表:
public int Id { get; set; }
[Required]
public string Title { get; set; }
public string Description { get; set; }
public int Ratings { get; set; }
// Foreign Key
public string Username { get; set; }
// Navigation property
public Guid Guid { get; set; }
我想使用UserName作为外键,因为它是唯一的。任何人都可以告诉我这是否正确。我不确定导航属性。
答案 0 :(得分:0)
对于拥有外键,标准示例说你应该有这样的东西:
public Guid UserId { get; set; }
[ForeignKey(nameof(UserId))]
public virtual User User { get; set; }
这允许您使用UserId
作为Foreign Key
,同时您可以懒惰地使用整个用户对象。您可以使用此属性访问代码中的Book.User.Username
。
有一个包含实际Username
的列是没有意义的。明天,如果您希望拥有用户Email
,则必须在Books表中添加另一列。但是通过上面的示例,您只需要访问代码中的Book.User.Email
。
(提示:使用Id
列很快就是外表中的PK
因此Indexed
。)
(提示2:避免使用Guid
作为Id列的类型。就个人而言,我使用`long,这在索引方面更有效并且具有合理的范围)