簡體   English   中英

使用實體框架顯示表

[英]Show tables using entity framework

我正在嘗試使用Entity Framework在gridview中顯示t1表的所​​有數據,但出現錯誤

LINQ to Entities無法識別方法'Int32 ToInt32(System.String)'方法,並且該方法無法轉換為商店表達式。

這是我的代碼:

protected void Button2_Click(object sender, EventArgs e)
{
    var v = (from obj in de.t1
             where obj.Id == Convert.ToInt32(TextBox5.Text)
             select obj).ToList();
    GridView1.DataSource = v;
    GridView1.DataBind();
}

實體框架正在嘗試在SQL端執行Convert.ToInt32(TextBox5.Text) ,這顯然是不可以的。
因此,引入一個臨時變量來存儲轉換結果:

var tempId = Convert.ToInt32(TextBox5.Text);

然后將其傳遞給where子句:

...
where obj.Id == tempId
...
    protected void Button2_Click(object sender, EventArgs e)
        {
            var id = Convert.ToInt32(TextBox5.Text);
            var v = (from obj in de.t1
                    where obj.Id == id
                    select obj).ToList();
            GridView1.DataSource = v;
            GridView1.DataBind();
        }

您遇到的問題是實體框架不知道如何將Convert.ToInt32轉換為有效的SQL表達式。 在查詢之前,只需將文本框值轉換為整數,一切就可以了。

protected void Button2_Click(object sender, EventArgs e)
{
    int id = Convert.ToInt32(TextBox5.Text);
    var v = (from obj in de.t1
             where obj.Id == id
             select obj).ToList();
    GridView1.DataSource = v;
    GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
    var objId = Convert.ToInt32(TextBox5.Text);
    var v = (from obj in de.t1
            where obj.Id == objId
            select obj).ToList();
    GridView1.DataSource = v;
    GridView1.DataBind();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM