2016-12-06 132 views
0

我在数据库中的表被称为LineDocuments,包含三个列与表的列表:过滤器由多个属性

public int Id { get; set;} 
public int DocumentId { get; set;} 
public int LineId { get; set;} 

,我有哪些要添加新lineDocuments的方法,但不希望将DocumentIdLineId组合插入数据库表中。

例如,如果已经存在这样存在的数据库中的记录:

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(); 
} 

希望一切都清楚,任何帮助,将不胜感激。

+1

所以,你想插入一个'LineIdocuments'对象与'DocumentId'或'LineId'?我不确定是否是我,但不清楚你在问什么。 – RandomStranger

+0

在问题中编辑了一个例子。 – Marius

回答

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(); 
} 

它使用一个查询,以检查所有文件将其保存的有效证件之前。

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); 
     }); 
    } 
} 
+1

代码没有任何描述?=!没有一个非常详细的答案 –

+0

那么在方法参数中,我传递的不是一个实体的数组。 – Marius

+0

对不起,移动版本不是那么友好。这段代码必须放在foreach循环中。 – ajaysinghdav10d