【问题标题】:Adding multiple new rows of data to a table based on values in another table根据另一个表中的值向表中添加多行新数据
【发布时间】:2013-01-23 22:15:38
【问题描述】:

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

我的表格如下

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

[类别](ID,主题)

[CLASSINSTANCE](ID、主题、CLASSID)

[CLASSINSTANCEDETAIL](学生 ID、班级 ID、出勤率)

[ENROLLEDIN](学生号,班级)

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

CLASS CLASSINSTANCE CLASSINSTANCEDETAIL 学生

学生 注册 班级

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

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

PS。我使用实体框架将我的数据库与我的模型一起导入到数据访问层文件夹中,如果这有什么不同的话。

【问题讨论】:

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


    【解决方案1】:

    好吧,要使用 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);
    }
    

    这假设 StudentClass 多对多关系被直接映射,而 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);
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-13
      • 2022-01-10
      • 2018-12-29
      • 1970-01-01
      • 2012-11-27
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多