Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “解决方案”;一个实体对象不能被IEntityChangeTracker的多个实例引用;错误_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# “解决方案”;一个实体对象不能被IEntityChangeTracker的多个实例引用;错误

C# “解决方案”;一个实体对象不能被IEntityChangeTracker的多个实例引用;错误,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我正在尝试更新一个成员,该成员有很多关系,但收到一个错误,该错误表示,一个实体对象不能被多个IEntityChangeTracker实例引用。下面是我编写的各种模型和控制器。如有任何关于如何纠正此问题的建议,将不胜感激 会员模式 public partial class Member { NCOWW_DB db = new NCOWW_DB(); public Member() { this.Contacts = new HashSet<Contac

我正在尝试更新一个成员,该成员有很多关系,但收到一个错误,该错误表示,
一个实体对象不能被多个IEntityChangeTracker实例引用。下面是我编写的各种模型和控制器。如有任何关于如何纠正此问题的建议,将不胜感激

会员模式

public partial class Member
  {
    NCOWW_DB db = new NCOWW_DB();
    public Member()
    {
      this.Contacts = new HashSet<Contact>();
      this.Utilities = new HashSet<Utility>();
    }

    public int MemberID { get; set; }

    [Display(Name = "Member Name")]
    [Required]
    public string Name { get; set; }

    [Display(Name = "Member Number")]
    public string Number { get; set; }

    [Display(Name = "Mutual Aid Agreement On File")]
    public bool MutualAid { get; set; }

    [Display(Name = "Type ID")]
    public Nullable<int> TypeID { get; set; }

    [ForeignKey("TypeID")]
    public virtual UtilityType MemberType { get; set; }

    [Display(Name = "Water Population")]
    public Nullable<int> WaterPopulation { get; set; }

    [Display(Name = "Wastewater Population")]
    public Nullable<int> WastewaterPopulation { get; set; }

    private Address _Address = new Address();
    public Address Address { get { return _Address; } set { _Address = value; } }

    private Coordinates _Coordinates = new Coordinates();
    public Coordinates Coordinates { get { return _Coordinates; } set { _Coordinates = value; } }

    [NotMapped]
    public double Distance { get; set; }

    public bool Deleted { get; set; }

    [Display(Name = "Enable Member")]
    public bool Enabled { get; set; }

    private DateTime _createdOn = DateTime.UtcNow;
    public DateTime CreatedOn { get { return _createdOn; } set { _createdOn = value; } }

    private DateTime _modifiedOn = DateTime.UtcNow;
    public DateTime ModifiedOn { get { return _modifiedOn; } set { _modifiedOn = value; } }

    public System.Guid ModifiedBy { get; set; }

    //public virtual ICollection<Utility> Contacts { get; set; }
    private ICollection<Contact> _Contacts;
    public virtual ICollection<Contact> Contacts {
      get
      {
        return (from c in db.Contact
               where (c.MemberID == MemberID && c.Deleted == false)
               select c).OrderBy(c => c.FirstName).ToList(); 
      }
      set
      {
        _Contacts = value;
      }
    }

    //public virtual ICollection<Utility> Utilities { get; set; }
    private ICollection<Utility> _Utilities;
    public virtual ICollection<Utility> Utilities
    {
      get
      {
        return (from u in db.Utility
                where (u.MemberID == MemberID && u.Deleted == false)
                select u).OrderBy(u => u.Name).ToList();
      }
      set
      {
        _Utilities = value;
      }
    }
  }

当您设置成员的属性时,它会自动获取修改后的状态so语句
db.Entry(member.State=EntityState.Modified是不需要的

但我不知道将实体附加到dbcontext的位置,这可能是代码中的另一个问题。 看来你应该打电话来

db.Members.Attach(member);

当您设置成员的属性时,它会自动获取修改后的状态so语句
db.Entry(member.State=EntityState.Modified是不需要的

但我不知道将实体附加到dbcontext的位置,这可能是代码中的另一个问题。 看来你应该打电话来

db.Members.Attach(member);

当您设置成员的属性时,它会自动获取修改后的状态so语句
db.Entry(member.State=EntityState.Modified是不需要的

但我不知道将实体附加到dbcontext的位置,这可能是代码中的另一个问题。 看来你应该打电话来

db.Members.Attach(member);

当您设置成员的属性时,它会自动获取修改后的状态so语句
db.Entry(member.State=EntityState.Modified是不需要的

但我不知道将实体附加到dbcontext的位置,这可能是代码中的另一个问题。 看来你应该打电话来

db.Members.Attach(member);

您在处理多个上下文时非常粗心(甚至没有正确处理)。在每个
成员
实用程序
实体中,您实例化了一个新的上下文:

NCOWW_DB db = new NCOWW_DB();
并在属性获取程序中使用它,如
Member.Contacts
(即使没有保护,如果集合尚未加载,那么每次访问属性时都会得到一个DB查询)

发生特定异常是因为
db.Entry(member).State=EntityState.Modified
成员
实体和所有相关实体附加到上下文
db
。为了附加相关的
联系人
实体,EF必须接触属性getter
成员。Contacts
将在getter中运行查询,该查询将
联系人
实体附加到另一个上下文,即您在
成员
实体中实例化的上下文。不允许将同一对象附加到两个不同的上下文,这会导致异常


您应该以某种方式重构代码,以确保对DB操作只使用相同的上下文实例。特别是我不想在实体中创建上下文成员。对于这样的查询,最好的地方是存储库、数据访问或服务层,或者任何您喜欢称之为它们的地方。

您在处理多个上下文时非常粗心(甚至没有正确地处理)。在每个
成员
实用程序
实体中,您实例化了一个新的上下文:

NCOWW_DB db = new NCOWW_DB();
并在属性获取程序中使用它,如
Member.Contacts
(即使没有保护,如果集合尚未加载,那么每次访问属性时都会得到一个DB查询)

发生特定异常是因为
db.Entry(member).State=EntityState.Modified
成员
实体和所有相关实体附加到上下文
db
。为了附加相关的
联系人
实体,EF必须接触属性getter
成员。Contacts
将在getter中运行查询,该查询将
联系人
实体附加到另一个上下文,即您在
成员
实体中实例化的上下文。不允许将同一对象附加到两个不同的上下文,这会导致异常


您应该以某种方式重构代码,以确保对DB操作只使用相同的上下文实例。特别是我不想在实体中创建上下文成员。对于这样的查询,最好的地方是存储库、数据访问或服务层,或者任何您喜欢称之为它们的地方。

您在处理多个上下文时非常粗心(甚至没有正确地处理)。在每个
成员
实用程序
实体中,您实例化了一个新的上下文:

NCOWW_DB db = new NCOWW_DB();
并在属性获取程序中使用它,如
Member.Contacts
(即使没有保护,如果集合尚未加载,那么每次访问属性时都会得到一个DB查询)

发生特定异常是因为
db.Entry(member).State=EntityState.Modified
成员
实体和所有相关实体附加到上下文
db
。为了附加相关的
联系人
实体,EF必须接触属性getter
成员。Contacts
将在getter中运行查询,该查询将
联系人
实体附加到另一个上下文,即您在
成员
实体中实例化的上下文。不允许将同一对象附加到两个不同的上下文,这会导致异常


您应该以某种方式重构代码,以确保对DB操作只使用相同的上下文实例。特别是我不想在实体中创建上下文成员。对于这样的查询,最好的地方是存储库、数据访问或服务层,或者任何您喜欢称之为它们的地方。

您在处理多个上下文时非常粗心(甚至没有正确地处理)。在每个
成员
实用程序
实体中,您实例化了一个新的上下文:

NCOWW_DB db = new NCOWW_DB();
并在属性获取程序中使用它,如
Member.Contacts
(即使没有保护,如果集合未被删除)