Внешний ключ для Microsoft.AspNet.Identity.EntityFramework.IdentityUser?

Я нахожусь в VS 2013 и только что создал приложение MVC.

Я создаю объект, который намереваюсь иметь внешний ключ к таблице AspNetUsers в результирующей базе данных. У проекта действительно есть ApplicationUser (производный от IdentityUser), который выглядит как соответствие столбца свойства с таблицей AspNetUsers.

Как правильно объявить внешний ключ к этому?

public MyObject
{
   public string UserId { get; set; }

   [ForeignKey("UserId")]
   public ApplicationUser User { get; set;}

   // other properties
}

Теперь я изменяю ApplicationUser, чтобы иметь коллекцию MyObjects:

public ApplicationUser : IdentityUser
{
     public virtual ICollection<MyObject> MyObjects { get; set; }    
}

Это похоже на то, как это сделать один-ко-многим в EF Code First. Однако, когда я обновляю базу данных, я получаю сообщения об ошибках, в которых говорится, что у членов Identity (IdentityUserLogin, IdentityUserRole и т. Д.) Не определены ключи. Возможно, эти классы не были предназначены для участия в EF Code First Migrations?

Я мог бы пойти «назад» и добавить внешний ключ с помощью операторов SQL, но если я захочу снова выполнить обновление из Code First, я могу получить ошибки (что база данных в настоящее время не соответствует более старой миграции или что-то в этом роде).

Как правильно ссылаться на эти таблицы членства по внешнему ключу?

Я также попытался создать класс AspNetUser с соответствующими свойствами таблицы AspNetUsers. Вместо «public ApplicationUser» в классе Client я объявил «public AspNetUser». Это привело к сбою миграции: «Автоматическая миграция не была применена, потому что это привело бы к потере данных».

Так что делать?

Ответы на вопрос(5)

Ваш ответ на вопрос