我使用的是EF 6,项目正在使用UnitOfWork模式。
以下是GenericRepository的片段:
public virtual void Insert(TEntity entity)
{
dbSet.Add(entity);
}
public virtual void Delete(object id)
{
TEntity entityToDelete = dbSet.Find(id);
Delete(entityToDelete);
}
public virtual void Delete(TEntity entityToDelete)
{
if (context.Entry(entityToDelete).State == EntityState.Detached)
{
dbSet.Attach(entityToDelete);
}
dbSet.Remove(entityToDelete);
}
public virtual void Update(TEntity entityToUpdate)
{
dbSet.Attach(entityToUpdate);
context.Entry(entityToUpdate).State = EntityState.Modified;
}
我想要做的是加载我的实体没有跟踪,所以我可以保存它,以便创建对象及其关联等的重复版本。
我想基本上这样做:
var company = DbContext.Companies.AsNoTracking()
.Include(c => c.Locations
.Select(l => l.Stores
.Select(s => s.Products)))
.Where(c => c.Id == 123)
.FirstOrDefault();
DbContext.Companies.Add(company);
DbContext.SaveChanges();
我不确定如何使用我拥有的UnitOfWork设置来完成此操作。
我尝试做一个DbSet.Remove但是只是试图删除它,而不是设置跟踪。
我该怎么做?