У меня есть код Первая модель в Entity Framework версии 6.1.1, которая в основном выглядит следующим образом:EF Отношение (1 до 0..1) не будет удалено
public class TinMan {
public int Id { get; set; }
public virtual Heart Heart { get; set; }
}
public class Heart {
public int Id { get; set; }
}
Это представлено в актуальном базы данных, как это, где генерируется Heart_Id
колонка автоматически EF, который также создает внешнего ключа между двумя таблицами:
TinMen: Hearts:
Id Heart_Id Id
1 1 1
2 3 2
3 NULL 3
Создание отношения, где ни один не существует, или изменение существующего отношения работает просто отлично:
using (MyDbContext dbContext = new MyDbContext()) {
TinMan bill = dbContext.TinMen.FirstOrDefault(man => man.Id == 1);
if (bill != null) bill.Heart = 2;
TinMan bob = dbContext.TinMen.FirstOrDefault(man => man.Id == 3);
if (bob != null) bob.Heart = 1;
dbContext.SaveChanges();
}
Теперь я пытаюсь удалить соотношение:
using (MyDbContext dbContext = new MyDbContext()) {
TinMan jebediah = dbContext.TinMen.FirstOrDefault(man => man.Id == 2);
if (jebediah != null) jebediah.Heart = null;
dbContext.SaveChanges();
}
После этого была выполнена жестянщика с ID == 2 еще имеет сердце в базе данных, то есть он был не набор для NULL
в базе данных.
Почему?
Это не объясняет, почему установка свойства «null» не работает, но учтите, что без дополнительной настройки EF будет рассматривать отношение «один ко многим» от «Сердце» до «TinMan». –