C# 使用LINQ将数据插入数据库
我写了一个非常简单的方法。它将classC# 使用LINQ将数据插入数据库,c#,sql,linq,C#,Sql,Linq,我写了一个非常简单的方法。它将classDayWeather中的数据保存到数据库中。方法检查表中是否存在当天的行,并更新她或创建新行 为此,我为LINQ添加了新类,并将表从服务器检查器移动到构造函数。它生成新的类WeatherTBL 方法本身如下所示: public static void SaveDayWeather(DayWeather day) { using (DataClassesDataContext db = new DataClassesDataConte
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();
}
}
}
它写下,该测试已成功通过。但若你们看看桌子,它并没有变形。
没有显示错误消息。有人知道问题出在哪里吗
顺便说一句,对不起,我的英语不好
UDP
问题在于:
“…db可能会在每次生成时复制到调试或发布文件夹,覆盖修改后的文件夹”。谢谢@Silvermind我写了一个简单的方法将员工详细信息保存到数据库中
我编写了一个简单的方法将员工详细信息保存到数据库中
请尝试使用lambda表达式。在您的代码中,var existingDay的类型为IQueryable 为了插入或更新,您需要一个WeatherTBL类型的变量var existingDay。 因此,请尝试使用下面的
var existingDay =
db.WeatherTBL.SingleOrDefault(d => d.DateTime.Equals(day.Date.ToString()));
if(existingDay != null)
{
//so on...
}
希望它能工作。请尝试使用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!");
}
Linq到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!");
}
我不知道为什么它没有存储数据。但是,您的单元测试只是调用该方法,而不是使用assert来验证结果。@ARS,他没有用于验证的结果。方法返回void。我把结果检查到表中…我明白了。您仍然可以编写一个方法来检索数据并执行断言。无论如何,这是一个不同的讨论主题。您可以检查连接字符串以查看数据是否插入到正确的数据库中。除了@ARS提供的关于连接字符串的点之外,您的实体属性是否已映射?如果您这样做
2。请将客户节点从服务器资源管理器/数据库资源管理器拖到O/R设计器界面上。
然后它们将自动映射,但是,如果在此之后更改了数据库中的任何内容,则应该重做它,或者在dbml
属性
-页面中更改该实体
的源
,并且:您的数据库可能会在每次生成时复制到debug或release文件夹,覆盖修改后的数据库。您是否也在查看正确的文件(检查您的Release/Debug
文件夹)?我不确定为什么它没有存储数据。但是,您的单元测试只是调用该方法,而不是使用assert来验证结果。@ARS,他没有用于验证的结果。方法返回void。我把结果检查到表中…我明白了。您仍然可以编写一个方法来检索数据并执行断言。无论如何,这是一个不同的讨论主题。您可以检查连接字符串以查看数据是否插入到正确的数据库中。除了@ARS提供的关于连接字符串的点之外,您的实体属性是否已映射?如果您这样做2。请将客户节点从服务器资源管理器/数据库资源管理器拖到O/R设计器界面上。
然后它们将自动映射,但是,如果在此之后更改了数据库中的任何内容,则应该重做它,或者在dbml
属性
-页面中更改该实体
的源
,并且:您的数据库可能会在每次生成时复制到debug或release文件夹,覆盖修改后的数据库。您是否也在查看正确的文件(检查Release/Debug
文件夹)?