2011-09-13 8 views
0

私はRIAサービスにアクセスしていますが、次の(簡体字)EFモデル、持っている:EFエンティティを効率的に削除するにはどうすればよいですか?

public class Employee 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
} 

public class Department 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public List<Employee> { get; set;} 
} 

を、私は私のDomainContextから部署を削除するとき、私は参照従業員が同様に削除されていることを、期待します。基本的にカスケード削除.EFで処理されます。

1.カスケードは、データベースレベルで削除を有効にします:

私は本当に、本当に、可能な場合に、すべてこれを行うには好きではないと思います

は今、私はこれを達成するための2つの方法が見つかりました。

2.ロードし、実行時に子実体(従業員)(現在実装):

ユーザーが部門を削除したい場合は、従業員がリストにロードされ、反復処理し、コンテキストから削除。私は助けることができないが、これはclunkyだと感じるが、それは動作します...

これを処理するための適切な方法についての任意の考えですか?ありがとう!

答えて

3

あなたはEFでサポートされている両方の方法について述べました。あなたがそれらを好きでない場合は、ストアドプロシージャが必要です - 良い方法はありません。 EFの場合、最も一般的なソリューションはカスケード削除です。

+0

すべての子エンティティ(またはエンティティツリー全体)をロードして削除するだけで間違っていると感じます。つまり、EFが親エンティティタイプと子タイプを認識している場合、[parentId] = id *のDELETE FROM [childtable]を簡単に構築できるはずです。 – rumblefx0

+0

しかし、EFはそれをしません。そのため、同じものなので、誰もがカスケード削除を使用しています。 –

+0

私は、感謝を参照してください:) – rumblefx0

関連する問題