如何使用非常小的Entity Framework使用存储库模式迁移到Dependency Injection

时间:2019-06-16 18:12:32

标签: c# dependency-injection asp.net-core-mvc repository-pattern

我正在尝试使用存储库模式迁移到依赖项注入。我试图通过注入DbCcontext并在界面中实现该方法来建立存储库模式。我的目标是获取所有工单。我的WorkOrder中有一个名为DbContext的模型。

任何人都可以告诉我如何使用代码从我的界面中实现该方法以获取所有工作订单吗?

public class WorkOrderContext : DbContext
{
    public DbSet<WorkOrder> WorkOrder { get; set; }
}

public class WorkOrder
{
    public int UserId { get; set; }
    public string LocationId { get; set; }
    public string Reason { get; set; }
    public bool IsActive { get; set; } = true;
    public DateTime Date { get; set; } = DateTime.Now;
    public string StateId { get; set; } 
}

WorkOrderRepository

public class WorkOrderRepository : IWorkOrderRepository
{
    //Bringing in Db Context that will be used in Repos; 
    private WorkOrderContext _workOrderContext; 

    //Constructor that will inject the Context;
    public WorkOrderRepository(WorkOrderContext workOrderContext)
    {
        _workOrderContext = workOrderContext; 
    }

    //Implementing method from Interface; 
    public List<WorkOrder> GetWorkOrders()
    {
        return _workOrderContext.WorkOrder;            
    }
}

这是我的界面:

public interface IWorkOrderRepository
{
    List<WorkOrder> GetWorkOrders(); 
} 

我在

上遇到了错误
return _workOrderContext.WorkOrder;

它说

  

无法将类型Entity Framework转换为通用的系统集合

1 个答案:

答案 0 :(得分:2)

您遇到问题的行

return _workOrderContext.WorkOrder;

正在尝试返回您的存储库,而不是该存储库中的结果集合。

相反,将实现的回购清单返回:

return _workOrderContext.WorkOrder.ToList();