我在Visual Studio 2012中使用了实体框架。一切正常,但是当调用SaveChanges()时,它显示Addition成功消息,但数据未插入数据库。有人能帮助我吗?
这是完整项目的代码和链接。 https://docs.google.com/file/d/0BzGC-O73lSx7UDd4NFVxRXQyVG8/edit?usp=sharing
private void button1_Click(object sender, EventArgs e)
{
Database1Entities db = new Database1Entities();
Student s = new Student();
s.Name = StudentName.Text;
s.Address = Address.Text;
db.Students.Add(s);
if (db.SaveChanges() > 0)
{
MessageBox.Show("Addition Successfull");
}
else
{
MessageBox.Show("Addition Failed");
}
}
我的数据库脚本。
CREATE TABLE [dbo].[Student] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NULL,
[Address] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
先谢谢。
答案 0 :(得分:0)
您正在使用此条件进行验证:
if (db.SaveChanges() >= 0)
因此,如果为0,您仍然会打印Addition Successfull
你应该抓住一个例外,如果你没有得到一个,那么它就会成功:
using (var db = new Database1Entities())
{
Student s = new Student();
s.Name = StudentName.Text;
s.Address = Address.Text;
try
{
db.Students.Add(s);
int numOfUpdate = db.SaveChanges();
MessageBox.Show("Addition Successfull:" + numOfUpdate.ToString() + "updates");
}
catch(Execption ex)
{
MessageBox.Show("Addition Failed:" + ex.Message);
}
}