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

pej*_*man 15 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");
               }
       }
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误:

数据阅读器与指定的"GoogleModel.tbl_search"不兼容.类型为"id"的成员在数据读取器中没有具有相同名称的相应列.

注意:这是我的tbl_search班级:

 public partial class tbl_search
{
    public int id { get; set; }
    public string title { get; set; }
    public string result { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

cod*_*orx 13

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

更改:

Select top 1 title From tbl_search Where title=@title and id=@id 
Run Code Online (Sandbox Code Playgroud)

至:

Select top 1 * From tbl_search Where title=@title and id=@id 
Run Code Online (Sandbox Code Playgroud)

  • @pejman`db.Database.SqlQuery <string>(...)` (3认同)
  • @codewrox我不需要id,没有这种方式可以做任何事情吗? (2认同)