数据读取器中没有相应的列具有相同的名称

时间:2014-07-14 08:24:41

标签: entity-framework

我的Table名为tbl_search,其中包含以下列:id(int), title(nvarchar100), result(ntext) 我希望使用SQL query,如下所示:

    using (var db = new GoogleEntities())
      {
          const string selectCmd =
                @"Select top 1 title From tbl_search Where title=@title and id=@id ";

         var data = db.Database.SqlQuery<tbl_search>(
                selectCmd,
                new SqlParameter("@title", "wcf"),
                new SqlParameter("@id", 1)
                ).FirstOrDefault();



           if (data != null)
               {
                var serviceMember = data.ToString();
                label1.Text = serviceMember == "" ? "" : (serviceMember == "True" ? "On" : "Off");
               }
       }

但它给了我一个错误:

  

数据阅读器与指定的&#39; GoogleModel.tbl_search&#39;不兼容。该类型的成员&#39; id&#39;在数据阅读器中没有相应的具有相同名称的列。

注意:这是我的tbl_search课程:

 public partial class tbl_search
{
    public int id { get; set; }
    public string title { get; set; }
    public string result { get; set; }
}

我的桌子里有id ..问题是什么!!

4 个答案:

答案 0 :(得分:12)

您的SQL语句仅返回标题而不是完整实体。

变化:

Select top 1 title From tbl_search Where title=@title and id=@id 

为:

Select top 1 * From tbl_search Where title=@title and id=@id 

答案 1 :(得分:0)

我解决了这个问题,因为我在上一次选择中有一个'@StartDate'而asp.net无法读取它并将其作为'Column1'返回,所以我通过将@StartDate指定给一个好的变量来解决这个问题无论如何都要练习。

答案 2 :(得分:0)

请检查web.config中的连接字符串(检查您是否连接到正确的域)。

在我的情况下-web.config中的数据库连接字符串是指质量检查,我正在Dev数据库中进行修改。

答案 3 :(得分:0)

我做了以下事情:

  1. 确认存储过程是最新的(“实时”列已更新)。
  2. 在EF中,我删除,保存并重新添加了存储的过程。
  3. 重建和验证的所有类型均已正确映射(无错误)。

完成上述操作后,错误消失了。