我有我的EntityFramework使用類:爲什麼建築需要花費大量的時間?
public partial class BaseDocument
{
public BaseDocument()
{
DocumentLinks = new List<DocumentLink>();
}
public int Id {set;get;}
public virtual List<DocumentLink> DocumentLinks {set;get;}
}
public partial class Payment:BaseDocument
{
}
public partial class Bill:BaseDocument
{
}
public partial class DocumentLink
{
public int Id{set;get;}
public int StartDocId{set;get;}
public int EndDocId{set;get;}
public virtual BaseDocument StartDoc{set;get;}
public virtual BaseDocument EndDoc{set;get;}
}
現在我選擇使用LINQ文件,並希望通過他的DocumentLinks
的列表進行迭代。
var payment = dbContext.Payments.First(t=>t.Id = id);
foreach(var link in payment.DocumentLinks)
{
if (link is Payment)
{
//do something
}
else if (link is Bill)
{
//do something
}
}
而且我的代碼在行if (link is Payment)
上工作非常緩慢。在這條線以後,一切工作都很快。
出了什麼問題?
你能定義什麼是慢?你什麼時候測量? 'link'在'if(link ...)'之前被實例化,你的意思是?或者你的意思是'//在'Paymant'分支中執行某些代碼太慢了(但你沒有顯示它)? – Sinatr
你可能的「第n + 1個問題」的受害者:在'DocumentLinks' http://stackoverflow.com/questions/97197/what-is-the-n1-selects-issue – Rune