微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DbSet 方法在控制器内部调用时抛出 NotImplementedException

如何解决DbSet 方法在控制器内部调用时抛出 NotImplementedException

我遇到了麻烦,这是我的设置

我的背景:

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 'DbSet1”的类型“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();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。