0

asp.net と mvc 3 を使用してアプリケーションを作成しています。これが私のテーブルの簡略化されたバージョンです。

私のテーブルは次のとおりです

[生徒] (ID、名前)

[クラス] (ID、サブジェクト)

[クラスインスタンス] (ID、サブジェクト、クラスID)

[CLASSINSTANCEDETAIL] (STUDENTID、CLASSINSTANCEID、ATTENDANCE)

[ENROLEDIN] (STUDENTID、CLASSID)

生徒とクラスの間に関係があります

CLASS <- 1 から MANY -> CLASSINSTANCE <- 1 から MANY -> CLASSINSTANCEDETAIL <- MANY から 1 -> STUDENT

STUDENT <- 1 から MANY -> ENROLLEDIN <- MANY から 1 ->クラス

基本的に、私がしなければならないことは、新しいクラスを作成するたびに、クラスのクラス ID と一致する学生 ID を含む新しいレコードを ClassDetail テーブルに追加することです。例えば。新しいクラス インスタンスを作成した場合、そのテーブルでクラス ID を見つけ、一致するクラス ID を持つ ENROLLEDIN テーブル内のすべての学生のデータの新しい行を追加する必要があります。

mvc3 と asp.net を使用して c# でこれを行う方法を誰かが知っている場合は、非常に感謝しています!

PS。エンティティ フレームワークを使用して、データ アクセス レイヤー フォルダー内のモデルと共にデータベースをインポートしました。

4

1 に答える 1

0

さて、Linq を使用して C# で新しいClassDetailレコードを作成するには、次を使用できます。

var class = classInstance.Class;
var newDetails = from s in class.Students
                 select new ClassDetail
                 {
                     ClassInstance = classInstance, 
                     Student = s
                 };
foreach(ClassDetail cd in newDetails)
{
    ClassDetails.Add(cd);
}

これは、Student<->Class の多対多の関係が直接マップされ、EnrolledInテーブルがエンティティにマップされていないことを前提としています。もしそうなら、これを試してください:

var class = classInstance.Class;
var newDetails = from ei in class.EnrolledIn
                 select new ClassDetail
                 {
                     ClassInstance = classInstance, 
                     Student = ei.Student
                 };
foreach(ClassDetail cd in newDetails)
{
    ClassDetails.Add(cd);
}
于 2013-01-23T22:35:48.253 に答える