我在c#和asp.net中使用Linq来使用方法SaveChanges();
更新数据字段,但它不工作!!我不知道为什么?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default2 : System.Web.UI.Page
{
private GitamarineEntities context = new GitamarineEntities();
protected void Page_Load(object sender, EventArgs e)
{
var ves = context.tblVessels.First(v => v.vID == 15);
txtNav.Text = ves.vNavEqpm;
}
protected void Button1_Click(object sender, EventArgs e)
{
var ves = context.tblVessels.Single(v => v.vID == 15);
ves.vNavEqpm = txtNav.Text.Trim();
context.SaveChanges();
}
}
编辑后仍然没有运气
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//GitamarineEntities1 contextShow = new GitamarineEntities1();
//var vesShow = contextShow.tblVessels.First(v => v.vID == 15);
//txtNav.Text = vesShow.vNavEqpm;
//contextShow.Dispose();
}
protected void Button1_Click(object sender, EventArgs e)
{
GitamarineEntities1 contextUpdate = new GitamarineEntities1();
var vesUpdate = contextUpdate.tblVessels.First(v => v.vID == 15);
vesUpdate.vNavEqpm = txtNav.Text;
contextUpdate.SaveChanges();
}
}
伙计们,我已经改变了上面的编码,当我注释出Page_Load
编码时,它仍然有效!但是这样用户就看不到他/她在改变什么了!!
您需要做的就是检查Page_Load
中的IsPostBack
。试试这个:
if (!IsPostBack)
{
GitamarineEntities1 contextShow = new GitamarineEntities1();
var vesShow = contextShow.tblVessels.First(v => v.vID == 15);
txtNav.Text = vesShow.vNavEqpm;
}
考虑到你的文本确实被加载在文本框内,我想没有什么问题与数据库的链接。
你的HTML页面上的按钮可能没有分配给你的Button_Click
事件处理程序。
你的按钮应该是这样的:
<asp:Button ID="button1" runat="server" Text="Button" OnClick="Button1_Click" />
确保它位于<form>
元素中,并且该元素的属性为runat="server"
在事件处理程序上设置一个断点,并查看它是否被触发。如果没有,那么我们需要更多的代码来解决这个问题。
UpdateModel()到底在做什么?尝试将其注释出来,看看vNavEqpm是否正在从文本框值更新。另外需要考虑的是,重新初始化context在button click event中并在使用时进行处理,不建议这样保持连接活动状态,这样可能会锁定PageLoad