Tôi có một phương pháp:Có sử dụng một biểu thức lambda được chuyển vào một phương thức làm chậm truy vấn khung Entity Framework không?
public static void GetObjects()
{
using(MyContext context = new MyContext())
{
var objects = context.Bars.Where(b => b.Prop1 != null)
.Select(b => new MyObject{Prop = b.Prop1, Name = b.Name})
.ToList();
foreach(var object in objects)
{
// do something with the object
}
}
}
tôi tái cơ cấu phương pháp để làm cho nó tổng quát hơn để tôi có thể vượt qua trong một Func
vì vậy mà tôi có thể xác định tuyên bố where
và những gì bất động sản từ bảng Bars
được giao cho MyObject.Prop
như thế này:
public static void GetObjectsV2(Func<Bar, bool> whereFunc, Func<Bar, string> selectPropFunc)
{
using(MyContext context = new MyContext())
{
var objects = context.Bars.Where(whereFunc)
.Select(b => new MyObject{Prop = selectPropFunc(b), Name = b.Name})
.ToList();
foreach(var object in objects)
{
// do something with the object
}
}
}
GetObjectsV2
dường như chạy chậm hơn nhiều so với GetObjects
. Có bất kỳ lý do nào mà điều này sẽ ảnh hưởng đến hiệu năng hay không và nếu có thì có cách nào để giải quyết vấn đề này trong khi vẫn giữ chức năng linh hoạt không?
Cảm ơn rất nhiều cho câu trả lời nhanh chóng! – aubreyrhodes