[英]Error in MVC 5 with EF 6 “ System.InvalidOperationException: An entity object cannot be referenced by multiple instances of IEntityChangeTracker.”
[英]Entity Framework System.InvalidOperationException : 'An entity object cannot be referenced by multiple instances of IEntityChangeTracker.'
我在ASP.Net MVC项目中使用EntityFramework,我的解决方案中有3个项目:
我有2节课:
当我要创建文件夹时,我希望ID用户将用户与文件夹相关联。 所以在我的班级Folder中,我有这个属性来建立关系:
public virtual User user {get; set; }
当我想在数据库中添加文件夹时,在此行出现错误:
_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);
}
}
我想我没有使用相同的DbContext,但是当使用许多实体(用户和文件夹)时,我不知道如何保持相同的DbContext
我试着回答你的最后一个问题。
I think I don't use the same DbContext but I don't know
how keep the same DbContext when I use many entities (User and Folder)
您的上下文可以具有多个DbSet。 似乎只有一个,因为您将其称为“ _dbSet”。 我建议您命名一个DbSet“用户”和一个DbSet“文件夹”。 然后,您可以轻松地通过一种上下文访问用户和文件夹。
这是VB.net中的代码:
Public Class MyContext
Inherits DbContext
Public Property Users As DbSet(of User)
Public Property Folders As DbSet(of Folder)
End Class
和C#:
public class MyContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Folder> Folders { get; set; }
}
如果对此有更多疑问,请发布当前上下文类的源代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.