0

我有一個非常大的實體,有幾百個屬性。我有一個存儲庫,用於選擇所有實體並返回實體的IEnumerable。大型實體和ViewModel映射

在我的控制器中,我使用automapper映射到此實體的索引ViewModel,它只使用ViewModel中實體的兩個屬性。與選擇這兩個屬性相比,返回需要相當長的時間。它似乎是選擇實體的所有屬性,然後只使用其中的兩個。

這樣做的建議方式是什麼?我是否需要在存儲庫中創建視圖模型?

格雷姆

回答

2

您可以通過一個DTO或不同的模型。

public class LargeEntityDto 
{ 
    public string Foo { get; set; } 
    public string Bar { get; set; } 
} 

然後在你的倉庫

public IEnumerable<LargeEntityDto> GetLargeEntityDtos() 
{ 
    return context.LargeEntities 
     .Select(e => new LargeEntityDto { Foo = e.Foo, Bar = e.Bar}); 
} 
+0

是啊,這是我的想法。我並不是真的想要添加額外的DTO等等。只是希望我可以讓EF返回同一個實體,但可能還有一些其他字段沒有從數據庫中選出來。 – GraemeMiller

+0

+1:這可能是最簡單的方法。您也可以在EF上下文中設置一個實體,該實體只映射到您真正需要的那幾個屬性。 – StriplingWarrior