2

明らかな何かが欠けているかどうかはわかりません。モデルが流暢な API で設定されているプロジェクトで Entity Framework 6.0.0-rc1 を使用しています。エンティティの 1 つの構成は次のようになります。

HasMany(t => t.Entity)
 .WithRequired(tc => tc.ParentEntity)
 .HasForeignKey(tc => new {tc.Key1, tc.Key2})
 .WillCascadeOnDelete(true);

この構成を実行すると、すべてのテーブルとフィールドを含むデータベースが正しく作成されます。関係さえ正しく確立されますが、削除カスケードは確立されません。

Management Studio に移動して関係の更新/削除ルールを調べると、両方が非アクティブ化されています。

ご協力いただきありがとうございます。

4

1 に答える 1

2

これらのクラスでは:

public class Parent
{
    public int ID { get; set; }
    public ICollection<Child> Children { get; set; }
}

public class Child
{
    public int ID { get; set; }
    public int ParentID { get; set; }
    public Parent Parent { get; set; }
}

次のように構成します。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Parent>()
        .HasMany(p => p.Children)
        .WithRequired(c => c.Parent)
        .HasForeignKey(c => c.ParentID)
        .WillCascadeOnDelete(true);

}

カスケード削除を外部キーに置きます。

public override void Up()
{
    CreateTable(
        "dbo.Children",
        c => new
            {
                ID = c.Int(nullable: false, identity: true),
                ParentID = c.Int(nullable: false),
            })
        .PrimaryKey(t => t.ID)
        .ForeignKey("dbo.Parents", t => t.ParentID, cascadeDelete: true)
        .Index(t => t.ParentID);

    CreateTable(
        "dbo.Parents",
        c => new
            {
                ID = c.Int(nullable: false, identity: true),
            })
        .PrimaryKey(t => t.ID);

}
于 2013-10-30T16:02:13.147 に答える