Создать внешний ключ AspNetUsers для таблицы, используемой другим DBContext - PullRequest
1 голос
/ 08 марта 2019

Проблема

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

У меня есть 2 контекста БД, один из них по умолчанию(Я создал MVC 5 проект с индивидуальным шаблоном проекта учетной записи пользователя), а другой - это созданный мной контекст, в котором используются таблицы, отличные от контекста по умолчанию.

В ApplicationDbContext у нас есть AspNetUsers таблица, в которой есть несколько столбцов, но меня интересует Id.В другом ContextDB у меня есть таблица с именем Checkout, в которой также есть несколько столбцов, и один из них меня интересует - Id.Теперь я хочу реализовать отношение many to many.Итак, я создал еще одну таблицу, позволяющую вызывать таблицу CheckoutProducts, в которой есть столбец UserId, который будет внешним ключом, ссылающимся на первичный ключ в AspNetUsers, и у меня будет CheckoutId, который также будет внешним ключом, которыйссылается на первичный ключ в таблице Checkout.

Как я могу сделать выше в коде?

Сценарий

public class CheckoutUsers
    {
        [Key, Column(Order = 0)]
        [ForeignKey("User")]
        [MaxLength(128)]
        public string UserId { get; set; }

        [Key, Column(Order = 1)]
        [ForeignKey("Checkout")]
        public int CheckoutId { get; set; }

        public virtual ApplicationUser User { get; set; }
        public virtual Checkout Checkout { get; set; }
    }

Когда я запускаю приложение, оно возвращает:

System.Data.Entity.ModelConfiguration.ModelValidationException: 'Одна или несколько ошибок проверки былиобнаружен во время генерации модели: ShopOnline.App_Start.IdentityUserLogin :: EntityType «IdentityUserLogin» ключ не определен.Определите ключ для этого EntityType.ShopOnline.App_Start.IdentityUserRole :: EntityType «IdentityUserRole» не имеет определенного ключа.Определите ключ для этого EntityType.CheckoutUsers_User_Source:: кратность недопустима в роли «CheckoutUsers_User_Source» в отношении «CheckoutUsers_User».Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница кратности зависимой роли должна быть «*».IdentityUserLogins: EntityType: EntitySet «IdentityUserLogins» основан на типе «IdentityUserLogin», для которого не определены ключи.IdentityUserRoles: EntityType: EntitySet «IdentityUserRoles» основан на типе «IdentityUserRole», для которого не определены ключи.'

Стоит отметить, что если я удаляю эту таблицу или просто удаляю поле ApplicationUser User, то все работает нормально с точки зрения того, что у меня нет ошибки, а мой UserId не имеетвнешний ключ в другом планшете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...