实体对象不能被多个 IEntityChangeTracker 实例引用 编辑 DataGrid 行
Posted
技术标签:
【中文标题】实体对象不能被多个 IEntityChangeTracker 实例引用 编辑 DataGrid 行【英文标题】:An entity object cannot be referenced by multiple instances of IEntityChangeTracker Edit Row of DataGrid 【发布时间】:2021-06-29 11:02:38 【问题描述】:我想编辑我的 DataGrid 的某些行时收到此错误...
Xml 代码:
<DataGridTemplateColumn Header="ویرایش" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<materialDesign:PackIcon Kind="TooltipEdit" MouseDown="Edit_OnMouseDown" Tag="Binding Path=." Width="20" Height="20" VerticalAlignment="Center" Margin="5" Foreground="ForestGreen"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我很困惑,很累搜索不知道如何解决它..
private void Edit_OnMouseDown(object sender, MouseButtonEventArgs e)
if (sender is PackIcon btnSender)
if (btnSender.Tag is Place place)
place.LastUpdate = DateTime.Now;
_context.Entry(place).State = EntityState.Modified; // => Error here
_context.SaveChanges();
如果我删除或评论关系ICollection
并从Place
类继承BaseModel
类,这也将起作用
但我需要它们..
public class Place:BaseModel//
[Key]
public int PlaceId get; set;
public string Name get; set;
public long? PhoneNo get; set;
public string Manager get; set;
public string Address get; set;
public short? RoomCounter get; set;
public virtual ICollection<Suite> Suites get; set; //
public virtual ICollection<Bed> Beds get; set; //
public virtual ICollection<Device> Devices get; set; //
有什么想法吗?
【问题讨论】:
【参考方案1】:试试这个:
var existingPlace=_context.Set<Place>().FirstOrDefault(i=> i.Id==place.Id);
if(existingPlace!=null)
place.LastUpdate = DateTime.Now;
_context.Entry(existingPlace).CurrentValues.SetValues(place);
_context.SaveChanges();
【讨论】:
以上是关于实体对象不能被多个 IEntityChangeTracker 实例引用 编辑 DataGrid 行的主要内容,如果未能解决你的问题,请参考以下文章
实体对象不能被多个 IEntityChangeTracker 实例引用 编辑 DataGrid 行
一个实体对象不能被多个 IEntityChangeTracker 实例引用,即使我分离了它
Core Data Cocoa 错误 1570。不能保存多个实体对象
mvc 从视图传递到Controller 多个不同的实体类接收如何做呢?