1

我在 Visual Studio 2012 中使用实体框架。一切正常,但是当 SaveChanges() 调用发生时,它显示添加成功消息,但数据未插入数据库。有人能帮我吗?

这是完整项目的代码和链接。 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)
);

提前致谢。

4

1 回答 1

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);
 }
 }
于 2013-10-05T12:30:17.743 回答