【问题标题】:Entity Framework 4 - Adding an existing model to an association实体框架 4 - 将现有模型添加到关联
【发布时间】:2011-04-21 18:51:16
【问题描述】:

我定义了一个关系,一个模块可以包含很多课程。

我有一个界面,可让您将课程添加到模块;我已经尝试了下面的代码,但这会导致在模块表中创建一个新模块,然后将其添加到课程中

int moduleID = viewModel.moduleID;
course.Modules.Add( new Module { ID = moduleID } )
SaveChanges();

正确的方法应该是什么?

编辑:使用断点进行调试显示整数 moduleID 是正确的。

【问题讨论】:

    标签: entity-framework entity-framework-4


    【解决方案1】:

    你可以试试这个:

    var module = new Module { ID = viewModel.moduleID };
    // Attach first so that context doesn't track module as a new one
    context.Modules.Attach(module); 
    // Now make connection to attached module
    course.Modules.Add(module);
    context.SaveChanges();
    

    如您所见,我不需要从数据库加载模块来建立连接。这对于多对多关系非常有效,但在一对多关系的情况下可能会更复杂。

    【讨论】:

      【解决方案2】:

      您正在创建一个新模块,这意味着您得到的行为是正常的。您需要做的是,从您的数据上下文中获取与 moduleID 对应的 Module 对象,然后将其添加到您的课程中。

      int moduleID = viewModel.moduleID;
      var module = context.Modules.FirstOrDefault(m => m.ID == moduleID);
      course.Modules.Add(module)
      SaveChanges();
      

      希望这会有所帮助:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-08
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多