实体框架不适用于桌面

时间:2013-10-05 12:15:41

标签: c#

我在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)
);

先谢谢。

1 个答案:

答案 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);
 }
 }