2009-06-13 182 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」方法。