EF связь одно к одному необязательных свойств
От: DDS  
Дата: 03.09.15 07:49
Оценка:
Добрый день, есть сущность пациент. У него необязательное св-во компания.

    public class PatientInfo
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int RowId { get; set; }

        public string InsuranceCompanyCode { get; set; }
        public virtual Smo InsuranceCompany{ get; set; }
    }

    public class Smo
    {
        [Key]
        public string Code { get; set; }

        public virtual ICollection<PatientInfo> PatientInfo { get; set; }
    }


Мне нужна возможность подсоединять компанию к пациенту, если она есть. Если нет — то нет.

Проблема в том, что при удалении компании, относящейся к пациенту, я получаю:

SqlException : The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.PatientInfo_dbo.Smo_InsuranceCompanyCode". The conflict occurred in database "HS", table "dbo.PatientInfo", column 'InsuranceCompanyCode'.
The statement has been terminated.

Т.е. мы не можем удалить компанию, т.к. она ссылается на пациента.
Мне надо сделать так, чтобы запись можно было удалить, а данные в пациенте либо очищались в этих полях, либо просто навигационное свойство в PatientInfo.InsuranceCompany не подтягивалось при несуществующей записи компании.

Пробовал многочисленные комбинации с DbModelBuilder. Не помогает.
Отредактировано 03.09.2015 8:14 DDS . Предыдущая версия .
Re: EF связь одно к одному необязательных свойств
От: catch Россия  
Дата: 03.09.15 15:03
Оценка:
Здравствуйте, DDS, Вы писали:

DDS>Мне надо сделать так, чтобы запись можно было удалить, а данные в пациенте либо очищались в этих полях, либо просто навигационное свойство в PatientInfo.InsuranceCompany не подтягивалось при несуществующей записи компании.


DDS>Пробовал многочисленные комбинации с DbModelBuilder. Не помогает.



http://stackoverflow.com/questions/5048561/entity-framework-set-delete-rule-with-codefirst
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.