根据另一个表中的值向表中添加多个新行数据

时间:2013-01-23 22:15:38

标签: c# asp.net-mvc linq entity-framework

我正在使用asp.net和mvc 3来创建我的应用程序。这是我的表格的简化版本。

我的表格如下

[学生](身份证,姓名)

[CLASS](ID,SUBJECT)

[CLASSINSTANCE](ID,SUBJECT,CLASSID)

[CLASSINSTANCEDETAIL](学生,CLASSINSTANCEID,出席)

[ENROLLEDIN](STUDENTID,CLASSID)

我有学生和班级之间的关系

CLASS < - 1到MANY - > CLASSINSTANCE < - 1 TO MANY - > CLASSINSTANCEDETAIL < - MANY to 1 - > 学生

学生< - 1到MANY - > ENROLLEDIN < - MANY to 1 - > Class

基本上我需要做的是,evertime我创建了一个新类,我还需要在ClassDetail表中添加一个新记录,其中包含类的类id和每个学生在登记表中的匹配学生ID。例如。如果我创建了一个新的类实例,那么我需要在该表中找到classID,并为ENROLLEDIN表中具有匹配classID的每个学生添加一行新数据。

如果有人知道如何使用mvc3和asp.net在c#中做到这一点,我将非常感激!

PS。我使用我的模型在数据访问层文件夹中使用实体框架导入我的数据库,如果这有任何区别。

1 个答案:

答案 0 :(得分: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< - >类多对多关系,并且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);
}