2016-12-26 2 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; } 

Я хочу использовать UserName в качестве внешнего ключа, поскольку он является уникальным. Может ли кто-нибудь сказать мне, если это правильно. Я не уверен, что свойство навигации.

ответ

0

Для имеющих внешнего ключа стандартные примеры говорят, что вы должны иметь что-то вроде этого:

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

Это позволяет использовать UserId как Foreign Key, в то же время весь объект Пользователь лениво доступен тебе. Вы можете использовать это свойство для доступа к Book.User.Username в свой код.

Не имеет смысла иметь столбец, содержащий фактические Username. Завтра, если вы хотите иметь пользовательский номер Email, вам придется добавить еще один столбец в таблицу «Книги». Но с приведенным выше примером вам просто нужно получить доступ к Book.User.Email в коде.

:

(Tip2 (Подсказка Использование Id колонки быстро он является PK в иностранной таблице и, следовательно, Indexed.):. Избегайте Guid как тип для столбца Id Лично я использую `долго, который более эффективен в отношении индексации и имеет разумный диапазон)

+0

Хорошо. В этом есть смысл. Спасибо, что разобрался с путаницей. –

+0

Небольшая проблема относительно 'public virtual User User {get; задавать; } '. Я прикрепил скриншот. Какой из них я должен использовать? [Скриншот] (http://imgur.com/a/EGO3v) –

+0

Я думаю, что это должно быть 'IdentityUser' из' Microsoft.AspNet.Identity.EntityFramework' – bit

Смежные вопросы