2009-06-13 162 views
1

我想将新的admin添加到我的数据库中。但它不起作用。请看button1_Click事件处理程序,我需要在这个事件中增加值。ADO.NET实体框架SaveChanges()不起作用

public partial class Form1 : Form 
    { 
     protected NetTanitimTestEntities adminNameContext; 
     public Form1() 
     { 
      InitializeComponent(); 
      adminNameContext = new NetTanitimTestEntities(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      ObjectQuery<Admins> adminNameQuery = adminNameContext.Admins; 
      dataGridView1.DataSource = adminNameQuery; 
      dataGridView1.Columns["id"].Visible = false; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 

      using (NetTanitimTestEntities newadmin = new NetTanitimTestEntities()) 
      { 
       Admins admin = new Admins { Name = "ali", SurName = "Çorlu", Username = "acorlu", Password = "1234", UserType = "user" }; 
       newadmin.SaveChanges(); 
      } 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      adminNameContext.SaveChanges(); 
     } 
    }
+0

当您重新启动程序时,Button1添加的新行显示yup吗? – 2009-06-13 11:11:50

回答

4

我必须承认,我不知道一大堆有关实体框架,但是,在你的Button1的Click事件正在创建新的实体,但你是那么只需要调用的SaveChanges但你还没有加入新的Admins实体到NetTanitimTestEntities上下文。因此,我会聚集在一起,因为您使用的NetTanitimTestEntities环境不了解您创建的新实体,也没有任何内容持久存在于数据库中。所以,如果你将这个新的Admins实体添加到上下文中,然后调用SaveChanges,那么希望它会被保存到你的数据库中。

13

它看起来像你需要添加下面的命令到你的代码:

using (NetTanitimTestEntities newadmin = new NetTanitimTestEntities()) 
{ 
    Admins admin = new Admins { Name = "ali", SurName = "Çorlu", Username = "acorlu", Password = "1234", UserType = "user" }; 
    newadmin.AddToAdmins(admin); 
    newadmin.SaveChanges(); 
} 

或类似的东西取决于生成的方法的实际名称。你的“newadmin”对象应该有一堆为你模型中每个实体生成的“add”方法。