我在数据库中有一个名为LineDocuments
的表,包含三列:
public int Id { get; set;}
public int DocumentId { get; set;}
public int LineId { get; set;}
我有一个方法想要添加新的lineDocuments
,但又不想在数据库表中插入DocumentId
和LineId
组合。
例如,如果存在这样的数据库中的记录:
Id
- 1,DocumentId
- 1,LineId
- 1.还有一个包含DocumentId
- 1和LineId
记录的列表 - 1不允许插入此记录,因为它已经有了这种组合。
过滤此列表的适当方法是什么?
我现在只添加方法,它看起来像这样:
public void AttachLinesToDocs(List<LineDocuments> linesDocuments)
{
foreach (var lineDocument in linesDocuments)
{
dbConnection.LineDocuments.Add(lineDocument);
}
dbConnection.SaveChanges();
}
希望一切都清楚,任何帮助都会受到赞赏。
答案 0 :(得分:1)
嗯,你可以先检查一下:
public void AttachLinesToDocs(List<LineDocuments> linesDocuments)
{
var insertValid = from doc in linesDocuments
where !dbConnection.LineDocuments
.Any(x => x.DocumentId == doc.DocumentId && x.LineId == doc.LineId)
select doc;
foreach (LineDocuments lineDocument in insertValid)
{
dbConnection.LineDocuments.Add(lineDocument);
}
dbConnection.SaveChanges();
}
在保存有效文档之前,它使用一个查询来检查所有文档。
答案 1 :(得分:0)
这可以帮到你:
public void AttachLinesToDocs(List<LineDocuments> linesDocuments)
{
var qualifiedLineDocuments = linesDocuments.Where(inputld=> !dbConnection.LineDocuments.Any(ld=> ld.DocumentId== inputld.DocumentId && ld.LineId== inputld.LineId)).ToList();
qualifiedLineDocuments.ForEach(qld=>
{
dbConnection.LineDocuments.Add(qld);
});
}
}