在 MVC3 Code First EF 中,如何在不创建新实体(多对多)的情况下将一个实体与另一个实体关联?
所以我在class1和class2之间有一个多对多的关系。我需要 class1 来容纳许多 class2,反之亦然。但是,class2 是独立的;我有一个列表,我想单独编辑它们,然后与新的 class1 关联。
当我将我的 class2List 传递给控制器(通过 AJAX 和 JSON)时,我检查了 class2 的所有 Id 对应于 db 中的现有 id,即没有创建新的 class2。
模型
class
{
   [key]
   public int Id {set; get;} 
}
class1 : class 
{
        private ICollection<class2> _class2s;
        public virtual ICollection<class2> class2s
        {
            get { return _class2s ?? ( _class2s = new HashSet<class2>()); }
            set { _class2s = value; }
        }  
}
class2 : class
{
        private ICollection<class1> _class1s;
        public virtual ICollection<class1> class1s
        {
            get { return _class1s ?? ( _class1s = new HashSet<class1>()); }
            set { _class1s = value; }
        }  
}
控制器
public ActionResult SaveChanges(List<class2> class2List)
    {
        createNewClass2AndAssociateExistingClass2s(class2List);
        SaveChangesToDb();
        return View("ProductDetail", Model);
    }
createNewClass2AndAssociateExistingClass2s(List<class2> class2List)
{
    var newClass1 = newClass1()
    {
      class2s = class2List;
    }
    ////UnitOfWork allows me to access several DbSets in one transaction
    unitOfWork.Create(newClass1) 
}
SaveChangesToDb()
{
    unitOfWork.Commit();
}
这样做是创建一个新的 class1(应该如此),但不是将现有的 class2 与其关联,而是使用新的 Id 创建新的 class2 并将它们添加到数据库中。
我的问题:
这是否与 EF 如何从基类读取我的 Id 属性有关?
我如何能够将几个现有的 class2 作为列表与新的 class1 相关联,而不在数据库中创建新的 class2?
干杯