Внешний ключ для 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». Это привело к сбою миграции: «Автоматическая миграция не была применена, потому что это привело бы к потере данных».
Так что делать?