我有一个要输入数据库的对象数组。我的方法调用看起来像这样。
public void Add(CardElement[] cardElements){
foreach (var cardElement in cardElements)
{
Data.Entry(cardElement).State = System.Data.EntityState.Added;
}
Data.SaveChanges();
}
数据库表类似于这样
MS SQL = Table mytable Columns a,b,c,d,e,f
Unique Constraint a,b,c
我要插入的数据类似于此。
var obj [] = new [] {
new MyObject () { a = 1, b =1, c = 1 },
new MyObject () { a = 1, b =1, c = 2 }
new MyObject () { a = 1, b =1, c = 3 }
};
所以,我想在将它们添加到数据库之前检查数据库中的这三行。
我可以做类似的事情,但我认为这应该会导致一些额外的数据库访问。
private bool checkExists()...
foreach (var cardElement in cardElements)
{
var exists = (from ce in Data.CardElements
where ce.CardId == cardElement.CardId
where ce.Area == cardElement.Area
where ce.ElementName == cardElement.ElementName
select ce).Any();
if(exists return true)
}
return false
- 那么,我怎样才能更优雅地处理这个问题呢?
- 是否值得尝试使用 linq 完成此任务?
- 我应该写一些存储过程来提高性能吗?