ASP.Net MVC 3アプリケーションを作成していて、データベースを更新しようとすると外部キー制約の問題が発生します。移行を使用します。ASP.Net MVC 3 EF「テーブルにFOREIGN KEY制約を導入すると、サイクルまたは複数のカスケードパスが発生する可能性があります」
テーブル 'CategoryItemValues'にFOREIGN KEY制約 'FK_CategoryItemValues_CategoryProperties_CategoryPropertyId'を導入すると、サイクルまたは複数のカスケードパスが発生する可能性があります。 NO DELETE NO ACTIONまたはUP UP NO NO ACTIONを指定するか、他のFOREIGN KEY制約を変更してください。 制約を作成できませんでした。以前のエラーを参照してください。ここで
は私のクラスです:
public class Category
{
public int Id { get; set; }
[Display(Name = "Category Name")]
public string CategoryName { get; set; }
[Display(Name = "Display Name")]
public string DisplayName { get; set; }
[Display(Name = "Display Order")]
public int DisplayOrder { get; set; }
public bool IsTab { get; set; }
public bool Active { get; set; }
public virtual List<CategoryProperty> Properties { get; set; }
}
public class CategoryProperty
{
public int Id { get; set; }
public int CategoryId { get; set; }
[Display(Name="Property Name")]
public string PropertyName { get; set; }
[Display(Name = "Display Order")]
public int DisplayOrder { get; set; }
public virtual Category Category { get; set; }
}
public class CategoryItem
{
public int Id { get; set; }
public int CategoryId { get; set; }
public virtual Category Category { get; set; }
public virtual List<CategoryItemValue> Values { get; set; }
}
public class CategoryItemValue
{
public int Id { get; set; }
public int CategoryItemId { get; set; }
public int CategoryPropertyId { get; set; }
public string Value { get; set; }
public virtual CategoryItem Item { get; set; }
public virtual CategoryProperty Property { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// I know that the solution needs to go here!
}
私はCategoryItemValuesため削除にカスケードを無効にする必要がありますが、私はそれを行う方法がわからないですように思え。
modelBuilder.Entity < ...>() .HasRequired(...) .WithMany(...) .HasForeignKey(...) .WillCascadeOnDelete:私は、私のような何かをする必要があり知っています(偽)。
しかし、私はそれを正確に得ることはできません。
ありがとうございました!それは完璧に働いた。 – MattSavage
@MattSavage –
あなたの 'DbContext'クラスの実装の中の@JotDhaliwalは、' OnModelCreating(DbModelBuilder modelBuilder) 'をオーバーライドします - これは典型的な使い方です、あるいはエンティティごとのEntityTypeConfigurationを使うことができます) – NSGaga