![](/img/trans.png)
[英]Convert Func<T, object> to Func<FrameworkElement, object>
[英]Convert object type in Func<>
我有一個存儲庫對象,用於封裝數據存儲的數據類型。 我已經定義了在整個應用程序中使用的對象,並且在存儲庫內部,我必須將它們映射到數據存儲公開的類型。 到目前為止,我有以下內容:
//The class object I work with inside my code
public class Class
{
public string Name {get; set;}
}
public class ClassRepository
{
public Class GetClass(Func<Class, bool> query)
{
//newQuery = Do something to convert the Class object in Query to internalClass exposed from Database
using (var context = new DBEntities())
{
return Mapper.Map<Class>(context.InternalClasses.FirstOrDefault(newQuery));
}
}
}
我要弄清楚的是如何將Func<Class, bool>
轉換為Func<internalClass, bool>
這樣我就不必將數據資源使用的對象暴露給我的代碼。
我假設您使用的是AutoMapper,請不要將Mapper.Map與IQueryable對象一起使用。 將QueryableExtensions
命名空間與其Project().To<T>()
方法一起使用,是針對這種情況而設計的。
using AutoMapper.QueryableExtensions;
public class ClassRepository
{
public Class GetClass(Expression<Func<Class, bool>> query)
{
using (var context = new DBEntities())
{
return context.InternalClasses.Project().To<Class>().FirstOrDefault(query);
}
}
}
另外,您應該傳遞Expression<Func<Class, bool>>
而不是Func<Class, bool>
否則您的查詢將不會在服務器端發生。 它仍然可以與Func<Class, bool>
但是您將要通過網絡返回所有行,然后在內存中的客戶端上執行過濾器。 對於大型表,這將給您非常糟糕的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.