У меня есть два человека, которые могут иметь запись Атенди.Я хочу объединить эти два, оставив главного Атенди, если он есть, еще используя помощника вторичного.Затем удалите вторичный.
В SQL я бы написал так:
UPDATE dbo.atendee SET personid = @main.id WHERE id = @person.atendeeid
DELETE FROM people WHERE id = @person.id
Я пробовал в EF следующее, но получаю ошибку:
if (person.AtendeeId != null)
{
if (main.AtendeeId == null)
{
main.AtendeeId = person.AtendeeId;
main.Atendeed = person.Atendeed;
}
person.AtendeeId = null;
person.Atendeed = null;
}
db.Persons.Remove(person);
Ошибка:
Произошло нарушение ограничения ссылочной целостности: Свойство первичного ключа, которое является частью ограничения ссылочной целостности, не может быть изменено, когда зависимый объект не изменен, если он не установлен в субъект ассоциацииобъект.Основной объект должен быть отслежен и не помечен для удаления
Может кто-нибудь объяснить, как лучше всего перемещать ребенка?
В C # POCO.Человек имеет
public virtual int? AtendeeId { get; set; }
[ForeignKey("Id")]
public virtual Atendee Atendeed { get; set; }
В то время как у атенди есть:
public virtual int PersonId { get; set; }
public virtual Person Person { get; set; }
В SQL у Atendees есть
PersonId(int, not null)
И у людей есть
Atendeeid(int, null)