假設我有項目MyData,然後添加MyDb.edmx與EF嚮導。在我的數據庫中,我有表Person。然後我將在EF模型中獲得一個實體Person。如何在實體類中使用實體上下文以獲得性能?
然後我想通過部分類像一個分隔文件person.cs來擴展這個人:
namespace MyData
{
public partial class Person
{
[DataMember]
public int MyTotal
{
get
{
int count = 0;
using (MyEntities ctx = new MyEntities())
{
//run some linq to get calc based on other entities
}
return count;
}
}
}
它工作正常。然後在客戶端,我可以使用屬性MyTotal獲取實體Person實例。 問題是:當我想要列出Person在客戶端(如silverlight)時,性能非常糟糕,因爲對於Person的每個實例,它都會導致SQL DB連接併爲MyTotal運行一個SQL。
如果我有更多十種這樣的擴展屬性,性能將會非常糟糕。 如何解決這個問題?
當使用EF自動生成的所有實體時,它將保持所有關係(關聯)。如果使用由存儲過程檢索的自定義實體,我不確定是否保留所有這些關係。否則,您需要手動構建所有這些關聯,這會很痛苦。 – KentZhou
是的,但是你正試圖添加一些東西到一個不適合自動生成實體的實體中。這是爲什麼他們添加了使用存儲過程生成實體的能力的確切場景之一。 –
謝謝。如果我有幾個計算結果,並且想要將它們與People等實體關聯起來,如果不更改實體(保持所有自動生成的沒有更改),那麼更好的解決方案是什麼? – KentZhou