У меня есть проект, который я обновил с Npgsql.EntityFrameworkCore.PostgreSQL 2.0.0 до 2.1.2
У меня есть два класса, напрямую ссылающихся друг на друга с помощью виртуальной ссылки.
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual Account Account { get; set; }
}
public class Account
{
public string EMailAddress { get; set; }
public string DisplayName { get; set; }
public virtual User User { get; set; }
}
И это работало нормально, но после обновления я получаю следующую ошибку:
- $ exception {System.InvalidOperationException: дочерняя / зависимая сторона не может быть определена для отношения «один к одному» между «User.Account» и «Account.User». Чтобы определить дочернюю / зависимую сторону отношения, настройте свойство внешнего ключа. Если эти переходы не должны быть частью одного и того же отношения, настройте их без указания обратного. Подробнее см. http://go.microsoft.com/fwlink/?LinkId=724062.
Итак, в моем DataContext я установил внешние ключи, добавив
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<User>().HasOne(e => e.Account).WithOne(e => e.User).HasForeignKey<Account>(e => e.Id).OnDelete(DeleteBehavior.SetNull);
base.OnModelCreating(builder);
}
Это позволяет программе компилироваться и запускаться, но всякий раз, когда я ссылаюсь на Пользователя, Учетная запись равна нулю и наоборот. Я не уверен, почему мне нужно явно отображать свой внешний ключ сейчас, так как он не был необходим перед обновлением, или даже знаю, чтобы заставить его работать должным образом сейчас.