使用LINQ将数据插入数据库

本文关键字:插入 数据库 数据 LINQ 使用 | 更新日期: 2023-09-27 18:12:17

我写了一个非常简单的方法。它将DayWeather类的数据保存到数据库中。方法检查表中是否存在当天的行,并更新该行或创建新行。

我正在通过为LINQ添加新类并将表从服务器检查器移动到构造函数来做到这一点。生成新的类WeatherTBL

方法本身是这样的:

public static void SaveDayWeather(DayWeather day)
    {
        using (DataClassesDataContext db = new DataClassesDataContext())
        {
            var existingDay =
              (from d in db.WeatherTBL
               where d.DateTime.ToString() == day.Date.ToString()
               select d).SingleOrDefault<WeatherTBL>();
            if (existingDay != null)
            {
                existingDay.Temp = day.Temp;
                existingDay.WindSpeed = day.WindSpeed;
                existingDay.Pressure = day.Pressure;
                existingDay.Humidity = day.Humidity;
                existingDay.Cloudiness = day.Cloudiness;
                existingDay.TypeRecip = day.TypeRecip;
                db.SubmitChanges();
            }
            else
            {
                WeatherTBL newDay = new WeatherTBL();
                newDay.DateTime = day.Date;
                newDay.Temp = day.Temp;
                newDay.WindSpeed = day.WindSpeed;
                newDay.Pressure = day.Pressure;
                newDay.Humidity = day.Humidity;
                newDay.Cloudiness = day.Cloudiness;
                newDay.TypeRecip = day.TypeRecip;
                db.WeatherTBL.InsertOnSubmit(newDay);
                db.SubmitChanges();
            }
        }
    }

当我试图从UnitTest项目给他打电话时:

  [TestMethod]
    public void TestDataAccess()
    {
        DayWeather day = new DayWeather(DateTime.Now);
        DataAccessClass.SaveDayWeather(day);
    }

表示测试已成功通过。但如果看表格,它没有改变。没有错误信息显示。有人知道是什么问题吗?

注:对不起,我的英语不好。

UDP 问题在于:"…db可能会在每次构建时复制到调试或发布文件夹,覆盖您修改过的文件夹"。由于@Silvermind

使用LINQ将数据插入数据库

我编写了一个简单的方法来保存员工的详细信息到数据库中。

private void AddNewEmployee()
{
    using (DataContext objDataContext = new DataContext())
    {                
        Employee objEmp = new Employee();
        // fields to be insert
        objEmp.EmployeeName = "John";
        objEmp.EmployeeAge = 21;
        objEmp.EmployeeDesc = "Designer";
        objEmp.EmployeeAddress = "Northampton";                
        objDataContext.Employees.InsertOnSubmit(objEmp);
        // executes the commands to implement the changes to the database
        objDataContext.SubmitChanges();
    }
}

请尝试使用lambda表达式。在您的代码中,var existingDay的类型为IQueryable为了插入或更新,您需要一个WeatherTBL类型的变量var existingDay。因此,请尝试使用以下…

 var existingDay =
 db.WeatherTBL.SingleOrDefault(d => d.DateTime.Equals(day.Date.ToString()));
 if(existingDay != null)
  {
   //so on...
  }

Linq to SQL

        Detail tc = new Detail();

        tc.Name = txtName.Text;
        tc.Contact = "92"+txtMobile.Text;
        tc.Segment = txtSegment.Text;
        var datetime = DateTime.Now;
        tc.Datetime = datetime;
        tc.RaisedBy = Global.Username;
        dc.Details.InsertOnSubmit(tc);
        try
        {

            dc.SubmitChanges();
            MessageBox.Show("Record inserted successfully!");
            txtName.Text = "";
            txtSegment.Text = "";
            txtMobile.Text = "";
        }

        catch (Exception ex)
        {
            MessageBox.Show("Record inserted Failed!");
        }