【发布时间】:2014-08-11 09:03:09
【问题描述】:
我正在使用 .Net 4.5 和 Entity Framework 6 创建一个 REST Web API。 在我的更新方法中,我需要将在 web api 中收到的对象附加回 dbcontext。我已经使用下面的代码实现了这一点。我现在要做的是使这段代码可重用,以便我可以为模型中的任何对象调用 AttachToContext。
我知道我必须使用泛型类型 T 和 TEntity,但我找不到任何合适的示例。
//Repository.cs
public void UpdateOrderItem(OrderItem orderItem)
{
try
{
AttachToContext(orderItem);
_context.SaveChanges();
}
catch (Exception e)
{
}
}
private void AttachToContext(OrderItem orderItem)
{
var entry = _context.Entry<OrderItem>(orderItem);
if (entry.State == EntityState.Detached)
{
var attachedEntity = FindExistingEntity(orderItem.Id);
if (EntityExists(attachedEntity))
{
UpdateEntityValues(attachedEntity, orderItem);
}
else
{
entry.State = EntityState.Modified;
}
}
}
private OrderItem FindExistingEntity(int id)
{
var set = _context.Set<OrderItem>();
return set.Find(id);
}
private void UpdateEntityValues(OrderItem existing, OrderItem updated)
{
var attachedEntry = _context.Entry(existing);
attachedEntry.CurrentValues.SetValues(updated);
}
private bool EntityExists(object entity)
{
return entity != null;
}
【问题讨论】:
标签: asp.net entity-framework-6 dbcontext