2016-12-26 11 views
0

私は、自分のプロジェクトに対して個別の承認でデフォルトのWebApiテンプレートを使用しました。 私は正常にアカウントを登録し、ユーザー名が電子メールではなくユーザー名フィールドに格納されるようにモデルとコントローラを編集しました。これは既定での設定です。ASP.NETのアイデンティティユーザーをブックテーブルにリンク

私は以下のモデルでブックのテーブルを作成しようとしています:

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; } 

私はそれが一意であるため、外部キーとしてユーザー名を使用します。これが正しいのか誰にでも教えてもらえますか?私はナビゲーションプロパティをよく分かりません。

答えて

0

外部キーを持つために、標準の例は、あなたがこのような何かを持っている必要があることを言う:

public Guid UserId { get; set; } 
[ForeignKey(nameof(UserId))] 
public virtual User User { get; set; } 

これは、あなたがForeign KeyとしてUserId使用することを可能にすると同時に、全体のユーザーオブジェクトを遅延可能ですあなたへ。このプロパティを使用して、コード内のBook.User.Usernameにアクセスすることができます。

実際のUsernameを含む列を持つことは意味がありません。明日、ユーザーのEmailを取得するには、Booksテーブルに別の列を追加する必要があります。しかし、上記の例では、コード内のBook.User.Emailにアクセスするだけです。

は(ヒント:Id列を使用すると、高速で、それは外国人のテーブルでPKであり、したがってIndexedです。)

(Tip2:。個人的に、私は長い `使用Id列の型としてGuidを避け、インデックス作成に関してより効率的であり、合理的な範囲を有する)

+0

大丈夫。それは理にかなっている。混乱を解消してくれてありがとう。 –

+0

'public virtual User User {get;セット; } '。スクリーンショットを添付しました。どちらを使うべきですか? [スクリーンショット](http://imgur.com/a/EGO3v) –

+0

私はそれが 'Microsoft.AspNet.Identity.EntityFramework'の' IdentityUser'だと思います – bit

関連する問題