问题描述
我遇到了麻烦,这是我的设置
我的背景:
public partial class MyContext : DbContext
{
public MyContext() : base("MyConnectionString")
{
}
public DbSet<Categories> Categories { get; set; }
GetSingle 方法:
public virtual T GetSingle(Func<T,bool> where,params Expression<Func<T,object>>[] navigationProperties)
{
try
{
T item = null;
using (var context = new MyContext())
{
IQueryable<T> dbQuery = context.Set<T>().AsQueryable();
if (!navigationProperties.Any())
return dbQuery.Where(where).FirstOrDefault();
foreach (Expression<Func<T,object>> navigationProperty in navigationProperties)
{
dbQuery = dbQuery.Include(navigationProperty);
item = dbQuery
.AsNoTracking()
.Where(where)
.FirstOrDefault();
}
}
return item;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
在我的控制器中,我调用:
var categories = CategoriesControl.GetSingle(x => x.Active == true).OrderBy(x => x.Name);
执行 GetSingle 方法时出现以下异常:
尚未在继承自“DbSet1'. Test doubles for 'DbSet
1”的类型“CategoriesControl”上实现成员“Local”,必须提供所用方法和属性的实现。
我不知道如何解决这个问题。我需要帮助
解决方法
你打算怎么单身,在这个订单之后呢?您无法对单个项目进行排序。这没有任何意义。这就是 OrderBy 不用于处理单个项目的原因。试试这个:
var categories = CategoriesControl.Where(x => x.Active == true).OrderBy(x => x.Name).ToList();
或者如果您需要该系列的 Top 1:
var category = CategoriesControl.Where(x => x.Active == true).OrderBy(x => x.Name).FirstOrDefault();