IEntityChangeTracker的多个实例不能引用实体对象。'

时间:2017-09-22 14:31:44

标签: c# asp.net-mvc entity-framework unity-container

我在ASP.Net MVC项目中使用EntityFramework 我的解决方案中有3个项目:

  • Web项目ASP.net MVC
  • 有所有类的域项目
  • 有我的DbContext和请求数据库的数据项目

我有2个课程:

  • 用户
  • 文件夹

我使用 Unity 进行依赖注入。 当我想创建文件夹时,我希望Id User将User与文件夹相关联。 所以在我的课程文件夹中,我有这个归因于建立关系:

public virtual User user  {get; set; }

当我想在DB中添加文件夹时,我在此行中出错:

_dbSet.Add(entity);

错误是: System.InvalidOperationException:' IEntityChangeTracker的多个实例无法引用实体对象。'

这是方法

 public void Insert(TEntity entity)
        {
            if (entity == null)
                throw new ArgumentNullException("entity");

            try
            { 
                    _dbSet.Add(entity);
                    _dbContext.SaveChanges();
            }
            catch (DbEntityValidationException ex)
            {
                ThrowValidationError(ex);
            }
        }

这是我的课上下文

public class Context : DbContext
{

    private string NameServer { get; set; }
    private string NameDatabase { get; set; }

    // Name tables
    public DbSet<User> User{ get; set; }
    public DbSet<Folder> Folder{ get; set; }

    public Context()
    {
            this.NameServer = ServicesValues.cnameserver;
            this.NameDatabase = ServicesValues.cnamebdd;
            this.Database.Connection.ConnectionString = "Server=" + NameServer + "; Database=" + NameDatabase + "; Integrated Security = true";         
    }

我想我不会使用相同的DbContext,但我不知道在使用多个实体(用户和文件夹)时如何保持相同的DbContext

我认为我的用户存在于DBContext的其他实例

0 个答案:

没有答案