Не удается установить нулевую ассоциацию «многие к одному» и сохранить объект - PullRequest
0 голосов
/ 03 июля 2011

Скажи, что у меня есть:

public class Event {
   public int EventID { get; set; }
   ...
   public Sponsor Sponsor { get; set; }
}


public class Sponsor { get; set; }
   public int SponsorID { get; set; }
   ...
}

Таким образом, Событие может иметь, но не обязательно, Спонсора. Я могу создать Событие, назначить Спонсора и отлично его сохранить.

То, что я не могу понять, как сделать работу, это

Event event = context.Events.Find(id);
event.Sponsor = null;
context.SaveChanges();

Вышеуказанное не вносит изменений в столбец спонсоров в базе данных.

1 Ответ

0 голосов
/ 03 июля 2011

Попробуйте сделать «Спонсора» виртуальной собственностью.В зависимости от вашей конфигурации EF не знает, загрузили ли вы уже свойство Event.Sponsor, а если нет, оно также не знает, что Sponsor = null является действительным изменением.EF генерирует два вида прокси-серверов, и в зависимости от ваших POCO EF не генерирует прокси-сервер самоконтроля для вашего класса событий (например, Спонсор свойств навигации не является виртуальным), поэтому при сравнении снимковпредыдущего объекта «Событие», где «Спонсор» не был загружен, и обновленного объекта, где «Спонсор» был установлен на ноль, предполагается, что вы не изменили его значение.

...