C# EF更新实体的成员列表

C# EF更新实体的成员列表,c#,entity-framework,C#,Entity Framework,我有一个实体,它将另一个实体的集合作为属性。如何检查列表中的任何实体是否与作为参数获取的实体列表的成员不同,并且这是一个昂贵的操作?下面的示例代码是否将DB中的实体列表替换为参数中的实体列表 例如: class A { public virtual ICollection<B> Bs { get; set;} Some other properties } class B { public int AID {

我有一个实体,它将另一个实体的集合作为属性。如何检查列表中的任何实体是否与作为参数获取的实体列表的成员不同,并且这是一个昂贵的操作?下面的示例代码是否将DB中的实体列表替换为参数中的实体列表

例如:

    class A
    {
      public virtual ICollection<B> Bs { get; set;}
      Some other properties
    }
    class B
    {
      public int AID { get; set;}
      public virtual A A { get; set;}
      Some other properties
    }
    Controller
    {
      public async Task<bool> updateA(A a)
      {
         A newA= new A{ ID = a.ID};
         db.As.Attach(newA);
         newA.Bs= a.Bs;
      }
    }
A类
{
公共虚拟ICollection Bs{get;set;}
其他一些属性
}
B类
{
公共int-AID{get;set;}
公共虚拟A{get;set;}
其他一些属性
}
控制器
{
公共异步任务更新A(A)
{
A newA=newA{ID=A.ID};
db.As.Attach(纽瓦);
newA.Bs=a.Bs;
}
}

当您分配
newA.Bs=a.Bs
时,您实际上是在用
a.Bs
替换参考
newA.Bs
had,您只需要运行一个LINQ语句来生成一个新列表。我正在将其用于单值属性,是否可以将其用于集合?db.Entry(newA.State=EntityState.Unchanged;var分录=分贝分录(newA);entry.Property(r=>r.someproperty).IsModified=true;我发现最好的办法是把
newA.Bs
中的所有内容一扫而光,因为这会被
a.Bs
覆盖。不管是否有现有物品,因为它们会被完全相同的新物品替换。谢谢你的帮助