Первая миграция кода ASP.NET MVC - модель с 2 первичными ключами - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу создать таблицу, аналогичную таблице AspNetUserRoles в моей базе данных, в которой есть следующие столбцы:

User_id
Role_id

Эти столбцы относятся к таблицам пользователей и ролей

Как я могу создать один, используя мою модель? Я пробовал это так:

public class AspNetUserRolesExtendedDetails
{
    [Key]
    [Column(Order = 0)]
    public ApplicationUser UserId { get; set; }
    [Key]
    [Column(Order = 1)]
    public AspNetRolesExtendedDetails RoleId { get; set; }
}

Но когда я пытаюсь запустить миграцию, появляется эта ошибка:

AspNetUserRolesExtendedDetails:: EntityType 'AspNetUserRolesExtendedDetails' не определен ключ. Определите ключ для этого EntityType.
AspNetUserRolesExtendedDetails: EntityType: EntitySet «AspNetUserRolesExtendedDetails» основан на типе «AspNetUserRolesExtendedDetails», для которого не определены ключи.

Как я могу создать такую ​​таблицу и как правильно ее назвать?

EDIT:

Когда я обновляю свою модель так:

public class AspNetUserRolesExtendedDetails
{
    [Key]
    [Column(Order = 0)]
    [ForeignKey("AspNetUsers")]
    public ApplicationUser UserId { get; set; }
    [Key]
    [Column(Order = 1)]
    [ForeignKey("AspNetRolesExtendedDetails")]
    public AspNetRolesExtendedDetails RoleId { get; set; }
}

Я получаю эту ошибку:

Недопустимый атрибут ForeignKeyAtt для свойства RoleId типа App.Models.AspNetUserRolesExtendedDetails. Имя внешнего ключа «AspNetRolesExtendedDetails» не найдено в зависимом типе «App.Models.AspNetUserRolesExtendedDetails». Значение Name должно быть разделенным запятыми списком имен свойств внешнего ключа.

Обновление:

    [Key]
    [Column(Order = 0)]
    [ForeignKey("Id")]
    public String UserId { get; set; }
    public virtual ApplicationUser ApplicationUser { get; set; }
    [Key]
    [Column(Order = 1)]
    [ForeignKey("Id")]
    public String RoleId { get; set; }
    public virtual AspNetRolesExtendedDetails AspNetRolesExtendedDetails { get; set; }

Это то, что у меня сейчас, но я получаю эту ошибку:

Недопустимый атрибут ForeignKeyAttribute для свойства UserId типа App.AspNetUserRolesExtendedDetails. Свойство навигации 'Id' не найдено в зависимом типе 'App.Models.AspNetUserRolesExtendedDetails'. Значение Name должно быть допустимым именем свойства навигации.

1 Ответ

0 голосов
/ 05 сентября 2018

Так что мне удалось найти решение. По какой-то причине копирование имени Objects напрямую работало на меня.

public class AspNetUserRolesExtendedDetails
{
    [Key]
    [Column(Order = 0)]
    [ForeignKey("ApplicationUser")]
    public String UserId { get; set; }
    public virtual ApplicationUser ApplicationUser { get; set; }
    [Key]
    [Column(Order = 1)]
    [ForeignKey("AspNetRolesExtendedDetails")]
    public String RoleId { get; set; }
    public virtual AspNetRolesExtendedDetails AspNetRolesExtendedDetails { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...