具有多个表的实体框架多对多

时间:2015-04-13 17:53:47

标签: c# entity-framework

我正在使用三个表:模型,代码和项目,所有这些都通过多对多关系链接。模型可以有许多引入许多代码的项目。项目可以包含许多模型和许多代码,代码可以包含许多项目引入的许多模型。

我可以并且已经在Code-First Migrations中完成了基本的多对多关系。我现在的问题是,是否有任何方法可以扩展关系表以包含第3个表?我认为基于文档,我有ModelCodes,ModelProjects,CodeProjects等的表...它似乎是断开连接和乏味的。

EF是否设计了一个表ModelCodeProjects,即类似于下面的模型:

 public class ModelCodeProject()
{
    public int ModelId {get; set;}
    public int CodeId {get; set;}
    public int ProjectId {get; set;}
}

如果是这样,我怎么可能首先通过迁移代码来设置它?或者我最好创建多个多对多关系?

1 个答案:

答案 0 :(得分:0)

是的,你可以创建多个多对多关系。

要删除ID为#5的项目,该项目属于ID为#3的模型,您可以执行以下操作:

 var projects = db.Model.Single(m => m.ModelId ==5).Projects;
 var projectToDelete = projects.Single(p => p.ProjectId ==3);
 projects.Delete(projectToDelete);
 dbcontext.SaveChanges();

要更新项目或模型或代码,您只需从数据库中检索该实例即可。

 var code = db.Codes.Single(c => c.codeId == 5);
 code.Text = "new code";
 dbcontext.SaveChanges();