当前位置:编程学习 > C#/ASP.NET >>

请教 使用linq to sql语句更新数据库没反应

 既没有提示出错,但数据库记录也没有更新;希望得到高人指点笨人,谢谢~~
代码如下:
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bind();
        }
    }

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        db_dpieaDataContext dc = new db_dpieaDataContext();
        int keys = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex].Value.ToString());
        GridViewRow gvr = this.GridView1.Rows[e.RowIndex];
        TextBox className = (TextBox)gvr.Cells[0].FindControl("txtTypeName");
        TextBox typeW = (TextBox)gvr.Cells[1].FindControl("txtTypeUrl");        
        db_article_type stype = dc.db_article_type.Single(p => p.id == keys);
        stype.typeName = className.Text.Trim();
        dc.SubmitChanges();
        this.GridView1.EditIndex = -1;
        bind();
    }

    protected void bind()
    {
        db_dpieaDataContext dc = new db_dpieaDataContext();
        var aclass = from p in dc.db_article_type
                     where p.typeCode.Equals(getID)
                     select p;
        this.GridView1.DataSource = aclass;
        this.GridView1.DataKeyNames = new string[] { "id" };
        this.GridView1.DataBind();     
    }
--------------------编程问答-------------------- sf --------------------编程问答-------------------- ... --------------------编程问答-------------------- 问题原来是我们的表字段没有设置主键。。 --------------------编程问答-------------------- 要自动更新、删除。表必须设置主键。 --------------------编程问答-------------------- NorthwindDataContext ctx = new NorthwindDataContext();
Customer a= ctx.Customers.Single(c => c.CustomerID == "a");
a.CompanyName = "Name";
ctx.SubmitChanges();
定义表格的主键
参考 --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 查看你要更新的表有没有设置主键,要设置主键了才行. --------------------编程问答-------------------- 楼主自己找到答案了。 --------------------编程问答-------------------- 遇到一些bug,开发人员才会相信一些新颖的东西。那些从来不遇到使用linq to sql的bug的人,也不会理解linq to sql的方便性。 --------------------编程问答-------------------- 顺便说一下,许多时候你无需费心思创建独特的DataContext,你可以这样写:


using(var dbtrans=new DataContext(connString)
{
    var s=from Customer x in dbtrans.GetTable<Customer >() where x.CustomerID == "a" select x;
    .......
}


甚至,我们可以写:


public void SaveObj(object obj, DataContext context)
{
    var table = GetContext().GetTable(obj.GetType());
    table.InsertOnSubmit(obj);
}


这说明使用泛型,或者针对通用的object的方法,都是可以实现linq to sql功能的。微软vs中给出的使用linq to sql的方法有时候显得笨拙。 --------------------编程问答-------------------- “using(var dbtrans=new DataContext(connString)”后边少了一个圆括号,请自己补上。 --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 学习下。 --------------------编程问答-------------------- --------------------编程问答-------------------- 要设置主键才行。
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,