代码之家  ›  专栏  ›  技术社区  ›  user8669202

'系统。数据实体果心EntityFramework中发生了EntityCommandExecutionException。SqlServer。dll,但未在用户代码中处理

  •  0
  • user8669202  · 技术社区  · 7 年前

    我在下面执行了原始SQL查询,以仅从表中选择某些字段。

    {
     List<CustEmpVM> CustomerVMlist = new List<CustEmpVM>();
     var cid = db.Customers.SqlQuery("select SchedDate from Customer where CustID = '@id'").ToList<Customer>();
    }
    

    但我一直在犯这样的错误: System.Data.Entity.Core.EntityCommandExecutionException 发生在 但未在用户代码中处理

    附加信息:数据读取器与指定的 ALFHomeMovers.Customer CustID ,在数据读取器中没有同名的对应列。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Tetsuya Yamamoto    7 年前

    异常消息非常简单:查询将返回 Customer 表,但仅限于 SchedDate 返回列,因此EF无法映射其他省略的列,包括 CustID .

    Customers 是一个 DbSet<Customer> ,尝试从返回所有字段 相反:

    // don't forget to include SqlParameter
    var cid = db.Customers.SqlQuery("SELECT * FROM Customer WHERE CustID = @id", 
                                    new SqlParameter("id", "[customer_id]")).ToList();
    

    时间表 列,具体化查询结果并使用 Select 之后:

    var cid = db.Customers.SqlQuery("SELECT * FROM Customer WHERE CustID = @id", 
                                    new SqlParameter("id", "[customer_id]"))
                          .AsEnumerable().Select(x => x.SchedDate).ToList();
    

    注意:我认为可以从上面的SELECT查询构造基于LINQ的:

    var cid = (from c in db.Customers
               where c.CustID == "[customer_id]"
               select c.SchedDate).ToList();
    

    类似问题:

    The data reader is incompatible with the specified Entity Framework

        2
  •  0
  •   Manprit Singh Sahota    7 年前

    {
     List<CustEmpVM> CustomerVMlist = new List<CustEmpVM>();
     var cid = db.Customers.Where(w=>w.Id == YOURCUSTOMERID).Select(s=>new Customer{SchedDate = s.SchedDate }).ToList();
    }
    

    它将产生编译时错误而不是运行时错误。