當我嘗試使用某些返回類型時,我在存儲庫方法中遇到Select
方法的問題。在實體框架存儲庫中使用選擇器
在那裏我遇到的問題的信息庫的方法是:
public IEnumerable<T> List(Expression<Func<T, bool>> filter = null,
string include = "",
int Taked = 0, Expression<Func<T, T>> selector = null)
{
IQueryable<T> query = dbSet;
if (filter != null)
query = query.Where(filter);
#region Stringleri İnclude Eder
foreach (var includeProperty in
include.Split(new char[] {','},
StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
#endregion
if (selector != null)
query = query.Select(selector);
if (Taked != 0)
return query.Take(Taked).ToList();
return query.ToList();
}
internal DbContext context;
internal DbSet<T> dbSet;
我想用上述方法返回我的實體類,但我只想要填充某些屬性。我曾嘗試以下方法:
AdminWork workunit = new AdminWork();
IEnumerable<AdminMenu> adminMenus = workunit.Menu.List(x => x.Online == true,
selector: z => new AdminMenu
{
MenuID = z.MenuID,
Name = z.Name,
Path = z.Path
});
會拋出異常:
AdminMenu不能在LINQ構建以查詢實體
我也曾嘗試以下方法,但它要求退貨IEnumerable<int>
:
IEnumerable<AdminMenu> menus = workunit.Menu.List(x => x.Online == true,
selector: z => z.MenuID);
我的問題是如何創建我的實體類在LINQ實體的新實例,所以不是每個屬性都被填充。
你可以顯示'dbSet'變量的定義嗎?並且您能擴展「在返回類型中有麻煩」嗎? – Colin