将ASP.NET标识用户链接到图书表

时间:2016-12-26 05:10:09

标签: c# asp.net

我已将默认的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作为外键,因为它是唯一的。任何人都可以告诉我这是否正确。我不确定导航属性。

1 个答案:

答案 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,这在索引方面更有效并且具有合理的范围)