依存操作の有効な順序を決定できません。外部キーの制約、モデル要件、またはストアで生成された値が原因で依存関係が存在する可能性があります-exception when EntityFrameworkで自己参照関係を使用します。
私は親子関係を機能させようとしています:
public class Category {
public int CategoryId { get; set; }
public string Name { get; set; }
public int ParentId { get; set; }
public Category Parent { get; set; }
public List<Category> Children { get; set; }
}
これは私が使用する構成です(Fluent API):
Property(c => c.ParentId).IsOptional();
HasMany(c => c.Children).WithOptional(c => c.Parent).HasForeignKey(c => c.ParentId);
//HasOptional(c => c.Parent).WithMany(c => c.Children).HasForeignKey(c => c.ParentId);
HasMany()とHasOptional()の両方の構成で、次のような新しいカテゴリを保存しようとすると、「依存操作の有効な順序を判別できません...」という例外が発生します。
context.Categories.Add(new Category { Name = "test" });
EFがnullのparentIdを持つカテゴリを挿入しない理由がわかりません。データベースでは、ParentId外部キーをnullにすることができます。
これを行う方法を教えてもらえますか?
オプション関係の外部キープロパティとして使用するには、カテゴリクラスのParentId
をnull許容として定義する必要があります。
public int? ParentId { get; set; }
int
プロパティは値null
を取ることができないため、データベース列の値としてNULL
を表すことはできません。