How to: Create a POCO Entity with Proxies
The example in this topic shows how to create POCO entities with proxies. To create POCO entities with proxies, the POCO class must meet the requirements described in Requirements for Creating POCO Proxies.
The example in this topic uses the POCO classes that are defined in How to: Define POCO Entities and an AdventureWorks-based data model that is defined in How to: Customize Modeling and Mapping Files to Work with Custom Objects.
This example creates a new LineItem object by using the CreateObject method, and then adds the new LineItem to an existing Order.
' Specify the order to update. Dim orderId As Integer = 43680 Using context As New POCOAdventureWorksEntities() Try ' Enable lazy loading. context.ContextOptions.LazyLoadingEnabled = True Dim order As Order = context.Orders.Where(Function(o) o.SalesOrderID = orderId).First() ' Create a new item and add it to the order. ' The Entity Framework is going to generate ' proxy object for the newItem object. Dim newItem As LineItem = context.CreateObject(Of LineItem)() newItem.SalesOrderDetailID = 0 ' Assign the order to the new LineItem. newItem.SalesOrderID = orderId newItem.OrderQty = 1 newItem.ProductID = 750 newItem.UnitPriceDiscount = 0 newItem.UnitPrice = 2171.2942D newItem.ModifiedDate = DateTime.Today newItem.rowguid = Guid.NewGuid() newItem.SpecialOfferID = 1 ' Add the new item to the order. ' The order will be added to the context because ' we are working with POCO proxies. order.LineItems.Add(newItem) ' The state of the newItem is Added. Console.WriteLine(context.ObjectStateManager.GetObjectStateEntry(newItem).State.ToString()) ' Change the status and ship date of an existing order. order.ShipDate = DateTime.Today ' The sate of the order item is Modified. Console.WriteLine(context.ObjectStateManager.GetObjectStateEntry(order).State.ToString()) ' The newItem is set to Unchanged. context.SaveChanges() ' Change the newly added item. newItem.OrderQty = 2 ' The changes are tracked as they occur and the state of the object is Modified. Console.WriteLine(context.ObjectStateManager.GetObjectStateEntry(newItem).State.ToString()) ' Delete the newly created object. context.DeleteObject(newItem) ' Save changes in the object context to the database ' after first detecting changes again. context.SaveChanges() Catch ex As UpdateException Console.WriteLine(ex.ToString()) Catch ex As InvalidOperationException Console.WriteLine(ex.ToString()) End Try End Using