3

説明した方法hereを使用して、親レコードとすべての関連する子レコードを削除しようとしています。しかし、何が起こるかは、親が期待通りに削除されますが、子レコードキーフィールドは削除される代わりにNULLに更新されます。EF4 CTP5コードのカスケード削除子レコードの更新を実行します

また、子テーブルの外部キーの削除ルールをカスケードに設定し、SQL Serverの管理で親テーブルから削除すると、カスケード削除が正常に実行されます。

私はこのwalkthoughに従い、削除を実行するようにコードを修正することから始めました。

これはコードです:

using (var db = new ProductContext()) 
{ 
    var food = db.Categories.Find("FOOD"); 
    ((IObjectContextAdapter)db).ObjectContext.LoadProperty(food, f => f.Products); 

    db.Categories.Remove(food); 
    int recordsAffected = db.SaveChanges(); 

は、私が欠けているものはありますか?または、孤児の子供が意図した結果を記録していますか?

答えて

2

Productクラスの外部キープロパティ(つまり、Product.CategoryId)がnullable型(string)であるため、ProductとCategoryの関連付けはオプションとして設定されています。ソリューションおよび説明のための

public class Category 
{ 
    public string CategoryId { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<Product> Products { get; set; } 
} 

public class Product 
{ 
    public int ProductId { get; set; } 
    public string Name { get; set; } 

    [Required] 
    public string CategoryId { get; set; } 
    public virtual Category Category { get; set; } 
} 
+0

ありがとう:子エンティティを使用すると、私は次のコードで行ったようにRequiredとしてCategoryIdをマークする必要があり、親を削除した結果として削除されますされるように必要なこの関連付けを行うには! – markpsmith

関連する問題