【问题标题】:Unable to query ApplicationDbContext, method takes 1 argument无法查询 ApplicationDbContext,方法需要 1 个参数
【发布时间】:2020-02-04 10:37:58
【问题描述】:

我正在尝试获取模型列表,但我似乎无法查询 ApplicationDbContext。我得到一个 **No 方法“查询”的重载需要 1 个参数。 这是我的 ApplicationDbContext

private readonly ApplicationDbContext _context;
        public DapperController(ApplicationDbContext context)
        {
            _context = context;
        }

和 GetAll 方法


public List<PoleModel> GetAll()
        {
            var obj = _context.Query<PoleModel>("Select * from dbo.GRAD").ToList();
            return obj;
        }

我应该使用 List 以外的东西吗?像 IEnumerable 什么的?我有点迷茫,因为我之前没有在 .NET Core 中工作过......

【问题讨论】:

    标签: mysql asp.net database asp.net-core dbcontext


    【解决方案1】:

    您似乎试图混合使用实体框架和 Dapper。您正在注入一个 ApplicationDbContext,但随后尝试使用 Dapper 查询它,就像您使用 SqlConnection 对象一样。

    要使用 EF 查询上下文,您可以执行以下操作:

    public List<PoleModel> GetAll()
    {
        var obj = _context.PoleModelDbSet.ToList();
        return obj;
    }
    

    而要使用 Dapper,您需要注入一个 SqlConnection,例如:

    private readonly SqlConnection _connection;
    public DapperController(SqlConnection connection)
    {
        _connection = connection;
    }
    

    然后像这样查询它:

    public List<PoleModel> GetAll()
    {
        var obj = _connection.Query<PoleModel>("Select * from dbo.GRAD").ToList();
        return obj;
    }
    

    【讨论】:

    • 谢谢约翰,这正是我所需要的。我还了解到睡眠不足让我相当愚蠢:)
    【解决方案2】:

    您需要为代码优先数据库启用迁移才能初始化。打开包管理器并输入:

    1. 启用迁移
    2. 添加迁移initCreate
    3. 更新数据库

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多