Using the following simple relational database structure: an order has one or more OrderItems, and each OrderItem has one OrderItemStatus.
The Order, OrderItem, and OrderItemStatus tables associated with the foreign key relationships http://www.mindthe.net/images/OrdersDB.jpg
Entity Framework v4 are used to communicate with the database, and entities were created from this schema. In the example, the Entities connection is called EnumTestEntities.
The truncated version of the Order Repository class is as follows:
public class OrderRepository
{
private EnumTestEntities entities = new EnumTestEntities();
public Order Get(int id)
{
return entities.Orders.SingleOrDefault(d => d.OrderID == id);
}
public void Save()
{
entities.SaveChanges();
}
}
MVC2 Entity Framework. EditorFor MVC2 "".
POSTing , :
[HttpPost]
public ActionResult Edit(int id, FormCollection formValues)
{
Order order = orderRepository.Get(id);
var orderItems = order.OrderItems;
try
{
UpdateModel(order, "");
UpdateModel(order.OrderItems, "OrderItems.OrderItems");
orderRepository.Save();
return RedirectToAction("Details", new { id = order.OrderID });
}
catch (Exception e)
{
return View(order);
}
}
UpdateModel ValueProvider, , MVC2 OrderItems .
SaveChanges() OrderItems UpdateModel :
"The operation failed: The relationship could not be changed because one or more
of the foreign-key properties is non-nullable. When a change is made to a
relationship, the related foreign-key property is set to a null value. If the
foreign-key does not support null values, a new relationship must be defined,
the foreign-key property must be assigned another non-null value, or the
unrelated object must be deleted."
, EntityKeys , , , . , . Getting SaveChanges, .
, ? , EF4 , - , EF4 MVC2, . . , DisplayFor , .