EntityFramework 6存储库模式保留关系

时间:2013-11-19 01:24:05

标签: c# entity-framework ef-code-first code-first entity-framework-6

我想首先围绕EF6代码创建一个Repository Pattern。我相信我需要使用Detached实体,因为保存特定实体不应影响任何其他实体。有什么影响:

    public void Create(T item)
    {
        _ctx.Entity.Add(item);
        _ctx.SaveChanges();
        _ctx.Entry(item).State = EntityState.Detached;
    }

    public void Update(T item)
    {
        _ctx.Entity.Attach(item);                    
        _ctx.Entry(item).State = EntityState.Modified;
        _ctx.SaveChanges();
        _ctx.Entry(item).State = EntityState.Detached;
    }

    public void Delete(T item)
    {
        _ctx.Entity.Attach(item);
        _ctx.Entity.Remove(item);
        _ctx.SaveChanges();
    }

我的测试POCOS是

public class Foo { 
  public int Id { get; set; } 
  public string Name { get; set; } 
  public virtual ICollection<Bar> Bars { get; set; } 
} 
 public class Bar { 
 public int Id { get; set; } 
 [Required] 
 public Foo Foo { get; set; } 
 public string Name { get; set; } 
} 

这是否有公认的做法?在上面的代码中,例如,如果T item有一个子集合,并且我向该集合添加了一个元素并进行更新,那么该元素将不会被添加,我似乎遇到了

  

“保存不显示外部实体的实体时发生错误   他们关系的关键属性“

删除时出错。

谢谢!

0 个答案:

没有答案