У меня есть следующие объекты:Вставка зависимого общества с ApplicationUser
public class ApplicationUser : IdentityUser
{
...
public int? StudentId { get; set; }
public virtual Student Student { get; set; }
}
public class Student
{
public int Id { get; set; }
public string UserId { get; set; }
public virtual ApplicationUser User { get; set; }
}
И я пытаюсь создать новый пользователь приложения и студент, так что я делаю это:
var user = new ApplicationUser() {
Name = "test",
UserName = "test",
Student = new Student()
};
var result = await userManager.CreateAsync(user, "test12345!");
Результата является успешным, два объекта вставляются в базу данных, но Student.UserId имеет значение
Как вставить оба объекта и их отношения?
Я попытался установить student.UserId = user.Id, но затем я получаю исключение с этим сообщением: «Невозможно определить правильный порядок для зависимых операций»
как они отображаются? Student.UserId не может быть таким же, как User.Id (я предполагаю), потому что UserId является строковым типом, и когда Id является сгенерированной базой данных, это должно быть числовое значение. edit: когда пользователь.Id действительно является строковым значением, возникающая ошибка может быть исправлена с использованием HasOptional(). WithOptionalDependant() – DevilSuichiro
Да, Student.UserId совпадает с User.Id, ApplicationUser наследует от IdentityUser, а IdentityUser по умолчанию имеет строку Id – Escobar5
Кроме того, модель создана правильно, в базе данных у меня есть правильные внешние ключи, это просто, что значение не установлено – Escobar5