"자식"행을 삭제하려고하면 항상 예외가 발생합니다.EF6.0 "하나 이상의 외래 키 속성이 nullable이 아니기 때문에 관계를 변경할 수 없습니다."
using (var context = new CompanyContext())
{
ItemType itemType = context.ItemTypes.FirstOrDefault(i => i.Name == "ServerType");
ItemTypeItem itemTypeItem = itemType.Items.FirstOrDefault(i => i.Name == "DatabaseServer");
itemType.Items.Remove(itemTypeItem);
context.SaveChanges(); <=== exception!
}
다음과 같은 예외가 SaveChanges()
방법에서 발생한다 : 여기 snipset이다. 하나 이상의 외부 키 속성 이상의 비 널 때문에
"는 관계가 변경 될 수있다. 변화가 관계로 제조되는 경우, 관련 외부 키 속성은 널 (null) 값으로 설정된다. 외래 키가 null 값을 지원하지 않으면 새 관계를 정의해야하며 외래 키 속성에 다른 null이 아닌 값을 할당해야합니다. 그렇지 않으면 관련이없는 개체를 삭제해야합니다. "
엔티티 구성
public class ItemTypeConfiguration : NamedEntityConfiguration<ItemType>
{
public ConfigurationColumn ParentIDColumn;
public ConfigurationColumn ValidationPatternColumn;
public ItemTypeConfiguration() : base()
{
ParentIDColumn = new ConfigurationColumn() { Name = "ParentID", Ordinal = base.LastOrdinalPosition + 1 };
ValidationPatternColumn = new ConfigurationColumn() { Name = "ValidationPattern", Length = 1024, Ordinal=base.LastOrdinalPosition + 2};
this.Property(t => t.ParentID)
.HasColumnName(ParentIDColumn.Name)
.HasColumnOrder(ParentIDColumn.Ordinal);
this.HasOptional(t => t.Parent).WithMany().HasForeignKey(u => u.ParentID).WillCascadeOnDelete(false);
this.Property(t => t.ValidationPattern)
.HasColumnName(ValidationPatternColumn.Name)
.HasColumnOrder(ValidationPatternColumn.Ordinal)
.HasMaxLength(ValidationPatternColumn.Length);
}
...
public class ItemTypeItemConfiguration : NamedEntityConfiguration<ItemTypeItem>
{
public ConfigurationColumn ItemTypeIDColumn;
public ItemTypeItemConfiguration() : base()
{
ItemTypeIDColumn = new ConfigurationColumn(){Name="ItemTypeID", IsRequired=true, Ordinal= base.LastOrdinalPosition+1};
this.Property(t => t.ItemTypeID)
.HasColumnName(ItemTypeIDColumn.Name)
.HasColumnOrder(ItemTypeIDColumn.Ordinal);
this.HasRequired(t => t.ItemType).WithMany(t=>t.Items).HasForeignKey(u => u.ItemTypeID).WillCascadeOnDelete(true);
}
...
나는 블로그를 발견하지만 난 "DeleteObject 매크로"방법이 없습니다.
어떤 아이디어가? 고맙습니다.
의 중복 가능성 [하나 또는 외래 키 속성의 이상이 아닌 Null을 허용하기 때문에 관계를 변경할 수 없습니다 (HTTP ://stackoverflow.com/questions/5538974/the-relationship-could-not-be-changed-one-or-or-of-the-foreign-key-pro) –
링크가 다운되었습니다 –