проблема каскадного удаления в рамках сущности - PullRequest
1 голос
/ 22 июня 2011

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

 using (doctorEntities de = new doctorEntities())
            {
                var delete_base_print = (from Table_infobase_print tip in de.Table_infobase_print
                                         where tip.ID == ((Doctor.Table_infobase_print)(datagrid_table_infobase_print.SelectedItem)).ID
                                         select tip).First();
                de.DeleteObject(delete_base_print);
                de.SaveChanges();
            }

<Association Name="FK_Table_infodetail_print_Table_infobase_print">
      <End Role="Table_infobase_print" Type="doctorModel.Table_infobase_print" Multiplicity="1">
        <OnDelete Action="Cascade" />
      </End>
      <End Role="Table_infodetail_print" Type="doctorModel.Table_infodetail_print" Multiplicity="*" >
      </End>
      <ReferentialConstraint>
        <Principal Role="Table_infobase_print">
          <PropertyRef Name="ID" />
        </Principal>
        <Dependent Role="Table_infodetail_print">
          <PropertyRef Name="ID_infobase" />
        </Dependent>
      </ReferentialConstraint>
    </Association>

1 Ответ

2 голосов
/ 22 июня 2011
<OnDelete Action="Cascade" />

Это относится только к загруженным объектам в контексте вашего объекта (он будет каскадно удалять удаленные связанные объекты), но не к самой базе данных. Убедитесь, что вы установили каскадное ограничение удаления в базе данных для соответствующей таблицы.

Edit:

Чтобы установить каскадное удаление в SQL Server, установите правило удаления для отношения внешнего ключа на каскадное. Для этого откройте SQL Server Management Studio, откройте соответствующую таблицу для проектирования и покажите взаимосвязь внешнего ключа. Установите Каскад в качестве правила удаления в спецификации INSERT и UPDATE .

enter image description here

...