ASP.NET 4.0 and the Entity Framework 4 - Part 2: Perform CRUD Operations Using the Entity Framework 4
page 5 of 8
by Vince Varallo
Feedback
Average Rating: 
Views (Total / Last 10 Days): 43493/ 48

Step 4: Adding and Updating Records

The next step will be to add the code to allow the user to create new or update records in the table.

1.    Switch to Design view and double click on the Save button to create the button click event handler.

2.    Add the following code to the click event handler.

using (OrderDBContainer db = new OrderDBContainer())
{
  UserAccount userAccount = new UserAccount();
  userAccount.FirstName = txtFirstName.Text;
  userAccount.LastName = txtLastName.Text;
  userAccount.AuditFields.UpdateDate = DateTime.Now;
 
  if (ddlUsers.SelectedItem.Value == "")
  {
    //Adding                    
    userAccount.AuditFields.InsertDate = DateTime.Now;
    db.UserAccounts.AddObject(userAccount);
  }
  else
  {
    //Updating
    userAccount.Id = Convert.ToInt32(ddlUsers.SelectedValue);
    userAccount.AuditFields.InsertDate = Convert.ToDateTime(lblInserted.Text);
 
    db.UserAccounts.Attach(userAccount);
    db.ObjectStateManager.ChangeObjectState(userAccount, System.Data.EntityState.Modified);
  }
 
  db.SaveChanges();
 
  lblInserted.Text = userAccount.AuditFields.InsertDate.ToString();
  lblUpdated.Text = userAccount.AuditFields.UpdateDate.ToString();
 
  //Reload the drop down list
  LoadUserDropDownList();
 
  //Select the one the user just saved.
  ddlUsers.Items.FindByValue(userAccount.Id.ToString()).Selected = true;
}

This code starts by instanciating the OrderDBContainer object and then creates a new instance of a UserAccount object.  The FirstName and LastName are set to the value entered by the user.  The UpdateDate is set to the current date\time.  The next line checks if the selected item in the Users drop down list is blank.  A blank value would signify that the user selected "Create New User".  If they are creating a new user then the InsertDate is set to the current date\time and the UserAccount object is added to the list of UserAccount objects associated with the OrderDBContainer.  This doesn't add the record to the database, it simply lets the OrderDBContainer know that this object should be added to the database.

If the user was updating a record rather than adding one then the "else" logic would be followed.  The Id is set to the Id of the selected item in the drop down list.  The InsertDate should not be changed so the value that is displayed in the label for the insert date is used.  Since we don't want to add this record we need to call the Attach method on the UserAccounts object.  Again this tells the OrderDBContainer that this object exists. You then have to tell the OrderDBContainer to update the record associated with this object.  To do that you call the ObjectStateManager.ChangeObjectState method and pass in the object to be updated and the Modified entity state enumeration value.

The db.SaveChanges() method actually executes either the INSERT or UPDATE statement against the database.  Once the record is added or updated then the labels on the screen are updated to reflect the audit dates and the drop down list is refreshed.  You should be able to run the project now and add a few records.


View Entire Article

User Comments

Title: oussama   
Name: skksll
Date: 2012-11-26 9:58:51 AM
Comment:
great
Title: Very Good Article   
Name: cafeasp
Date: 2012-06-25 11:07:38 AM
Comment:
I just try the 'Update' code and it works perfect!

Thanks for sharing this info.
Title: Help there are erros in executing the sql file   
Name: Silver
Date: 2012-01-27 12:42:52 AM
Comment:
Msg 911, Level 16, State 1, Line 1
Database 'OrderSystem' does not exist. Make sure that the name is entered correctly.
Msg 262, Level 14, State 1, Line 17
CREATE TABLE permission denied in database 'master'.
Msg 262, Level 14, State 1, Line 3
CREATE TABLE permission denied in database 'master'.
Msg 4902, Level 16, State 1, Line 7
Cannot find the object "dbo.UserAccounts" because it does not exist or you do not have permissions.
Msg 4902, Level 16, State 1, Line 3
Cannot find the object "dbo.Addresses" because it does not exist or you do not have permissions.
Msg 4902, Level 16, State 1, Line 7
Cannot find the object "dbo.Addresses" because it does not exist or you do not have permissions.
Title: images   
Name: k k h
Date: 2011-12-09 2:25:39 PM
Comment:
Images are broken.
Title: CRUD operation   
Name: Suvashis
Date: 2011-04-07 6:45:55 AM
Comment:
Lots of thanks for the EF 4.0 CRUD Operation understanding
Title: You are the man   
Name: LukTar
Date: 2011-02-07 5:19:08 PM
Comment:
Big respect for YOU. Great article which helped me a lot.
Title: Great Work   
Name: Mayank
Date: 2010-10-29 4:26:15 AM
Comment:
It very helpful article to understand the initial CRUD operations using Entity Framework 4

Thanks a lot
Title: trusted   
Name: david zing
Date: 2010-07-05 7:35:59 PM
Comment:
ent:
I can´t use the lines the code below to update the entity:

db.UserAccounts.Attach(userAccount);
db.ObjectStateManager.ChangeObjectState(userAccount, System.Data.EntityState.Modified);

on the first line I get the message: Attach is not a member of System.Data.Objects.ObjectQuery(Of...)

What´s wrong ?
Title: Mr   
Name: David Zing
Date: 2010-06-09 6:52:52 AM
Comment:
I can´t use the lines the code below to update the entity:

db.UserAccounts.Attach(userAccount);
db.ObjectStateManager.ChangeObjectState(userAccount, System.Data.EntityState.Modified);

on the first line I get the message: Attach is not a member of System.Data.Objects.ObjectQuery(Of...)

What´s wrong ?
Title: N-Tier?   
Name: V. Jenks
Date: 2010-05-10 10:43:30 AM
Comment:
I'd love to see an article this straightforward and approachable in an n-tier tutorial? The EF seems very simple until you try and separate concerns. What if I'd like to store all of my business logic and data access in a separate class library project?
Title: Very good intro   
Name: Marshall
Date: 2010-05-05 2:23:05 PM
Comment:
Great intro to EF and made very simple to understand.
Title: Thanks   
Name: Soyka
Date: 2010-05-05 1:30:11 AM
Comment:
I'm coding just for fun and sometimes I don't know where to start with a new thing. Your articles put me on the right track...Thanks
Title: Far Too Good   
Name: Sreedevi
Date: 2010-03-31 7:14:48 AM
Comment:
This is a very nice article. Its seems like a cake walk creating applications using VS2010. Hope we get to work on VS 2010 very soon.

Product Spotlight
Product Spotlight 





Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-03-29 2:03:31 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search