Я нахожусь в VS 2013 и только что создал приложение MVC.Внешний ключ к Microsoft.AspNet.Identity.EntityFramework.IdentityUser?
Я создаю объект, в котором я намерен иметь внешний ключ в таблице 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». В результате этого произошел сбой миграции - «Автоматическая миграция не была применена, поскольку это приведет к потере данных».
Итак, что делать?
Я бы сделал предложение, избегая использования атрибутов для определения ваших отношений Entityframework. Если вы планируете использовать этот объект за пределами приложения базы данных, это затрудняет выполнение атрибутов. – BlackICE
У меня такая же проблема, вы ее решили? – Luther