2017-03-16 18 views
0

中間テーブルの外部キー列以外に多対多の関係がなければ、EFはエンティティを生成しますメインテーブルの場合にのみ、それぞれに仮想コレクションを配置して関係を表します。余分な列を含む多対多の関係がある場合、EFは中間の表のエンティティを生成して、余分な列にアクセスできるようにします。テーブルに余分な列を持たずに中間テーブルエンティティを生成させる方法があるかどうかを知る必要があります。言い換えればEntity Framework DB最初に多対多の中間テーブルを生成する余分な列を持たずに

:学校StudentSchool-学生:

は、我々は次のような関係を持っていると仮定しましょう。 私は学校IDを知っていれば、その学校で勉強していないすべての生徒をどのようにして中間のテーブルを持たなくてもいいのですか? (オブジェクトモデルでは、現在学校で勉強している学生のみが集まります)。 画像全体で何が欠けていますか?

答えて

1

多対多の関係が両側からの合計参加である場合に限り、EFは2つのテーブルのままになります。

このような場合には、 SQL:

Select * 
From Students 
Where StudentId Not IN(Select StudentId 
         From Schools      
         Where schoolId = x) 

又はラムダ

var SchoolsRequested = Schools.Where(x=>x.schoolId = x); 
var notWantedStudentIds = SchoolsRequested.Select(x=>x.StudentId).ToList(); 
Students.Where(x=> !notWantedStudents.Contains(x)); 
関連する問題