急切加载 - 如何更新实体包括一些相关实体?

时间:2018-05-22 07:44:23

标签: c# asp.net-mvc generics entity-framework-6 eager-loading

我有一个父表(来自oracle dataBase)和一些子表,我可以使用下面的Update方法成功更新父实体,但不能使用子代表。

顺便问一下,我可以在这里使用通用实体吗?

public void UpdateEnt<T>(T entity) where T : parent_table
{
    if (entity == null)
    {
        throw new ArgumentException("Cannot add a null entity.");
    }

    using (var _context = (DataModelDetach)d.GetContextForRead(Module))
    {
        var entry = _context.Entry<T>(entity);

        if (entry.State == EntityState.Detached)
        {
            var set = _context.Set<T>();
            T attachedEntity = set.Include(x => x.children_1).Include(x => x.children_2).SingleOrDefault(e => e.idSeq == entity.idSeq);  

            if (attachedEntity != null)
            {
                var attachedEntry = _context.Entry(attachedEntity);
                attachedEntry.CurrentValues.SetValues(entity);
            }
            else
            {
                entry.State = EntityState.Modified; // This should attach entity
            }
        }
    }
}

0 个答案:

没有答案