2011-10-18 10 views
1

今日私はvery similar questionに尋ねましたので、deja vuのビットを得るかもしれませんが、私はこの問題を解決できません。LINQ to Entities多対多関係のすべてのエントリを削除します

私は3つのMySqlテーブル:Students,ClassesおよびStudentsInClassesを持っています。

エンティティフレームワークは、これらをエンティティStudentClassの2つのエンティティに変換し、それぞれが多対多のナビゲーションプロパティ(例:Student.Classes)でリンクします。

しかし、誰StudentsInClassesエンティティ、そうSQLの同等は、エンティティへのLINQを使用して、呼び出すための最良の方法何もありません:

DELETE FROM StudentsInClasses; 

私は間違いなくすべてのClassesとそのStudentsをロードしないようにしたいです。もちろん、私はそのようにすることができますが、それは何千もの人がいて必要がないはずなので恐ろしいことになります。

多くのありがとうございます。

答えて

1

Paperjamのようなストアコマンドを実行することをお勧めしない場合は、このためのストアドプロシージャを作成することもできます。これはObjectContextの静的型付き関数にうまく対応します。

3

最初に:私が知る限り、最初にデータをロードせずにEFを使用してデータを削除することはできません。

第二:あなたは(EF.4以上)ADOまたはPOCOを使用することができます。

try 
     { 
      using (testEntities db = new testEntities()) 
      {      
       db.ExecuteStoreCommand<returnClass>("DELETE FROM StudentsInClasses;", NULL); 
      } 
     } 
     catch (Exception ex) { _Exceptions.ManageExceptions(ex);} 
0

あなたはEFマッピングに疑問を持っている場合は、メタデータファイルを確認することができます。これらのファイルは通常、プロジェクトのディレクトリobj/Debug/edmxResourcesToEmbedに存在します。メタデータファイルyourEntities.mslは、オブジェクトとテーブルの間のマッピングを定義します。 このファイルではStudents.ClassesStudentInClassesテーブルにマップされているため、そのリスト内のエントリを削除してStudentsを保存することは、StudentInClassesテーブルの行を削除することと同じです。

0
Student.Class.Clear() 

これは簡単です!変更を保存するだけで、多対多テーブルにその学生のエントリがなくなります。

関連する問題