使用linq将数据保存到数据库

时间:2012-07-13 03:16:58

标签: c# linq combobox textbox

我的代码存在将数据保存到数据库的问题。我有一个文本框和一个组合框但是当我在文本框中键入数据并在组合框中选择数据并单击保存时,没有任何反应并且在编译期间没有发现错误。我可以知道实际出了什么问题并给我一些解决方案吗?

enter code here  private void btnCreate_Click(object sender, EventArgs e)
    {
        using (testEntities Setupctx = new testEntities())
        {
            string selectST = cbSeats.SelectedItem.ToString();
            string inputST = txtStation.Text;

            var createStation = (from createST in Setupctx.stations
                                  where createST.Seats == selectST
                                  where createST.Station1 == inputST
                                  select createST).SingleOrDefault();
            if (createStation != null)
            {
                Setupctx.stations.AddObject(createStation);
                Setupctx.SaveChanges();
                txtStation.Text = "";

                MessageBox.Show("New Station Has Been Created.");
            }
        }
    }

非常感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

我同意@JamesD确保调用事件处理程序。

此外,当您从linq查询中获取对象并对其进行更改时,您需要通过在DataContext上调用SubmitChanges()来保存这些更改。 (我假设Setupctx是一个DataContext对象。)

请阅读此处了解有关SubmitChanges()

的信息

另外,我不知道你是否使用SQL。如果是这样,这是一个很棒的教程:Linq to SQL Tutorial

答案 1 :(得分:1)

您需要像这样创建一个新的电台对象:

    if (createStation != null)
  {
    var obj = new Staion();
    obj.Seats=selectST;
    obj.Staion1=inputST;


    Setupctx.Staions.Add(obj);
    Setupctx.SubmitChanges();

    txtStation.Text = "";

     MessageBox.Show("New Station Has Been Created.");
}

更多关于LINQ To SQL here

答案 2 :(得分:1)

这是正确的做法。

private void btnCreate_Click(object sender, EventArgs e)
    {
        using (testEntities Setupctx = new testEntities())
        {
            string[] stations = StationNameList();
            station creStation = new station();
            creStation.Station1 = txtStation.Text;
            creStation.Seats = cbSeats.SelectedItem.ToString();
            if (stations.Contains(txtStation.Text))
            {
                MessageBox.Show("This Station is already been created. Please enter a new Station.");
            }
            else
            {
                Setupctx.stations.AddObject(creStation);
                Setupctx.SaveChanges();
                txtStation.Text = "";
                cbSeats.SelectedIndex = -1;
                MessageBox.Show("New Station Has Been Created.");
            }
        }
    }

答案 3 :(得分:0)

只是查看清单:

  • 您是否确定按钮事件处理程序已连接?

当你说

  

没有任何反应

你的意思是没有调用事件处理程序吗?您实际上并没有对从数据库中检索到的工作站做任何事情。您将其重新添加到已将其拉出的电台列表中。