我从这里开始使用存储库
存储库中使用了以下两种方法:
public virtual void Insert(TEntity entity)
{
((IObjectState) entity).ObjectState = ObjectState.Added;
_dbSet.Attach(entity);
_context.SyncObjectState(entity);
}
public virtual void InsertGraph(TEntity entity)
{
_dbSet.Add(entity);
}有人能解释一下附件与SyncObjectState和.Add之间的区别吗?
发布于 2014-04-09 10:08:09
它是部分特定于您正在使用的开源项目的代码--而不是直接用于EF,所以为什么不检查源代码呢?使用开源不是有好处的吗?
简言之:
InsertGraph将获取您的实体及其所有关系,并将它们添加到上下文中--图中的所有实体都将作为新的实体插入数据库。Insert只会插入您要传递的实体,并且希望不会插入所有关系(如果您没有在其他地方操作它们的状态)。SyncObjectState只是将框架特定的状态表示转换为EF状态表示。https://stackoverflow.com/questions/22957927
复制相似问题