У меня есть следующее QueryableExpression
Выражение :
public static IQueryable<IView> View(IQueryable<IView> dbSet)
{
var result = dbSet
.Include(vw => vw.Site);
return result;
}
Я вызываю это так, и это работает:
var demo = SitesExpressions.View(_db.GetWorker<View>().DbSet).Single(v => v.Id == 1);
Но при этом асинхронный:
var error = await SitesExpressions.View(_db.GetWorker<Vie`w>().DbSet).SingleAsync(kf => kf.Id == 1);
Я получаю
ArgumentException: выражение типа 'System.Threading.Tasks.Task 1[LC.Assets.Components.Data.Models.Sites.View]'
cannot be used for return type
'System.Threading.Tasks.Task
1 [L C .Assets. Components.Data.Models.Sites.IView] '
Я знаю, что могу изменить выражение на
IQueryable<View>
, но мне интересно, почему это происходит.
IView, просмотр :
public interface IView
{
int SiteId { get; set; }
string Ref { get; set; }
Site Site { get; set; }
IEnumerable<MetaEntry> MetaEntries { get; set; }
string Group { get; set; }
string Name { get; set; }
}
public class View : IView
{
public int SiteId { get; set; }
public string Ref { get; set; }
public Site Site { get; set; }
public virtual IEnumerable<MetaEntry> MetaEntries { get; set; }
public string Group { get; set; }
public string Name { get; set; }
}