没有MVC的情况下如何在存储库上进行排序,分页和过滤

时间:2018-11-17 22:36:21

标签: c# asp.net-core entity-framework-core

我正在尝试仅为一个简单的CRUD项目创建后端部分。我对asp.net完全陌生,目前正在阅读。但是我被卡住了。

我已经创建了所需的实体(模型)

public class VehicleMakeEntity
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string Abrv { get; set; }

    public VehicleMakeEntity Make { get; set; }
}

我还创建了一个标准的DbContext类和存储库

class MakeRepository : IMakeRepository
{
    ProjectDbContext context;

    public MakeRepository(ProjectDbContext context)
    {
        this.context = context;
    }

    public void Delete(VehicleMakeEntity entity)
    {
        context.VehicleMake.Remove(entity);
        context.SaveChanges();
        Console.WriteLine(entity.Make.Name);
    }

    public void Insert(VehicleMakeEntity entity)
    {
        context.VehicleMake.Add(entity);
        context.SaveChanges();
    }

    public void Update(VehicleMakeEntity entity)
    {
        context.VehicleMake.Update(entity);
        context.SaveChanges();
    }

    public void Dispose()
    {
        context.Dispose();
    }
}

现在的问题是我找不到任何既不使用MVC也不使用存储库的文档。 我需要创建一个服务类来实现基本的页面调度,排序和过滤,但是我所研究的Like this都使用了MVC,我不知道如何将其转换为我的项目。

1 个答案:

答案 0 :(得分:-1)

根据您的代码和注释,您有一个适用于.NET Core Web应用程序的设置,该设置可以与服务一起实现(依赖注入)。但是,您可以在不托管Web应用程序的基于控制台的应用程序上运行整个依赖项注入设置。

首先,您需要添加Microsoft.AspNetCore.All包,以便获得您可能正在使用的所有类(主要是Microsoft.Extensions.DependencyInjection)。 现在,您可以构建服务提供商,如下所示:

var provider = new ServiceCollection()
                .AddDbContext<ProjectDbContext>(config => // connection here)
                .AddScoped<IMakeRepository, MakeRepository>()
                .BuildServiceProvider();

您现在可以从提供商那里获取所需的任何服务。上面的代码还允许您添加在任何.NET Core MVC教程中找到的任何服务,因为它使用相同的类和库。假设您要获取IMakeRepository,可以使用以下代码:

var makeRepo = provider.GetService<IMakeRepository>();

您现在可以测试makeRepo对象内部的功能。