有没有一种方法可以将数据添加到 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 Documents
和 Groups
。我有一个名为 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();
}
我有两个 table Documents
和 Groups
。我有一个名为 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();
}