Сначала произошел сбой отношения один к одному в коде структуры объекта

Сначала я пытаюсь построить код EF v4.1 для отношений один к одному. Это мой код:

public class System
{
    [Key, ForeignKey("Station") ] 
    public int Id { get; set; }

    [DisplayName("Last Polled")]
    public DateTime? LastPolledOn { get; set; }

    public virtual Station Station { get; set; }
}

public class Station
{
    public int Id { get; set; }               
    public int Status { get; set; }

    public string FullName
    {
        get
        {
            return StoreNumber + " - " + StoreName;
        }
    }

    public virtual System System{ get; set; }        
}

Это работает нормально, но когда я удаляю Station, я получаю ошибку каскадного удаления:

«Невозможно удалить значение первичного ключа, поскольку ссылки на этот ключ все еще существуют. [Имя ограничения внешнего ключа = System_Station]»}»

Что мне делать, чтобы решить эту проблему?


person Jaggu    schedule 01.09.2011    source источник


Ответы (2)


Как сообщает вам сообщение об ошибке, отношение внешнего ключа к Station все еще существует, поэтому восьмерка сначала использует каскадное удаление или удаляет соответствующие строки в System.

person Christoph Fink    schedule 01.09.2011
comment
Опереди меня на минуту.. Я слишком медленный! - person Phil; 01.09.2011
comment
@Phil: Ты понятия не имеешь, как часто это случается со мной на SO, потому что здесь много быстро печатающих ;-)... - person Christoph Fink; 01.09.2011
comment
Я понял ваш второй подход к ручному удалению System. Но как мне использовать каскадное удаление? Что нужно изменить в коде? Спасибо chrfin. - person TCM; 01.09.2011
comment
@Anthony: я не пользователь EF, поэтому я не могу вам помочь, но проверьте следующую ссылку: blogs.msdn.com/b/alexj/archive/2009/08/19/ - person Christoph Fink; 01.09.2011

Первичный ключ System также является внешним ключом для Station. Если вы удаляете Station, вам нужно сначала удалить System. Вы также можете использовать каскадное удаление.

person Phil    schedule 01.09.2011
comment
Привет, Фил, как мне использовать каскадное удаление. Что нужно изменить в моем коде? - person TCM; 01.09.2011