有没有一种方法可以将数据添加到 ASP.NET MVC 中多对多关系的链接 table 中?

Is there a way to add data into a linking table of a many to many relationship in ASP.NET MVC?

我有两个 table DocumentsGroups。我有一个名为 DocumentsGroups 的链接 table,其中包含文档和组 ID。

我想将数据插入 DocumentsGroups。我正在获取文档 ID 列表和一个组 ID,并按如下方式遍历列表:

// List<DocumentIds> obj;
// groupId = 1;

var group = this._database.Groups.Single(d => d.Id == groupId);

// Looping through all the documents 
foreach(var doc in obj.DocumentsId)
{
    var document = this._database.Documents.Single(d => d.Id == doc);
    group.Documents.Add(document);
}

我首先找到带有注释掉代码的组 ID 的组对象。然后我遍历文档列表并获取每个文档的对象,然后使用它添加到链接 table 但我在最后一行出现错误

Object reference not set to an instance of an object

GroupDocuments 是一个模型,其中包含我要添加到数据库中的文档的 ID,因此我从视图中接收它。当我循环遍历时,我确实得到了一个文档对象,我不知道这个错误是怎么来的。有人知道解决方法吗?

您必须在添加或创建列表之前包含文档

var group = _database.Groups.Where(d => d.Id == groupId).Include(i=>i.Documents).FirstOrDefault();

if (group!=null)
{
   if (group.Documents==null) group.Documents=new List<Document>();

// and only now you can start adding
foreach(var doc in obj.DocumentsId)
{
    var document = _database.Documents.Where(d => d.Id == doc).Single();
 
    group.Documents.Add(document);
}
_database.SaveChanges();
}