EF Core: Почему один конец моего однозначного отношения, допускающего значение NULL, всегда имеет значение NULL?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 EF Core: Почему один конец моего однозначного отношения, допускающего значение NULL, всегда имеет значение NULL?

Сообщение Anonymous »

У меня есть модель устройства и модель Tid. Устройства и TID могут существовать независимо друг от друга или могут быть связаны вместе. Если оно связано, то ровно одно устройство может быть связано ровно с одним TID.
Для этого мне нужно отношение «один к одному», допускающее значение NULL, что означает, что либо оба конца имеют значение NULL, либо оба конца не являются нулевыми.
Я смоделировал это следующим образом...

Код: Выделить всё

public class Device {
// Irrelevant properties excluded for clarity
public string? TidId { get; set; }
public virtual Tid? Tid { get; set; }
}

public class Tid {
// Irrelevant properties excluded for clarity
public string? DeviceId { get; set; }
public virtual Device? Device { get; set; }
}

public class AppDbContext : IdentityDbContext {
// Irrelevant code excluded for clarity
protected override void OnModelCreating(ModelBuilder builder) {
base.OnModelCreating(builder);

builder.Entity()
.HasOne()
.WithOne(t => t.Device)
.HasForeignKey(t => t.DeviceId)
.IsRequired(false);

builder.Entity()
.HasOne()
.WithOne(d => d.Tid)
.HasForeignKey(d => d.TidId)
.IsRequired(false);
}
Однако, когда я устанавливаю Tid на устройстве и сохраняю, хотя свойство навигации установлено на устройстве, свойство навигации на Tid не установлен, а это означает, что я не вижу, какое устройство связано с этим устройством.
То же самое происходит и наоборот, если я устанавливаю Устройство
То же самое происходит и наоборот, если я устанавливаю Устройство
code> для Tid, то свойство навигации установлено для Tid правильно, а свойство навигации для устройства — нет, поэтому я не вижу, какой TID связан с устройство.
Глядя в базу данных, похоже, что между таблицами созданы две связи по внешнему ключу, и я предполагаю, что устанавливается только одна из них, в зависимости от того, какой объект я обновляю.. .
Изображение

Кто-нибудь может объяснить, как мне следовало это сделать. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/775 ... lways-null
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»