У меня есть эта сущность
public class StockQuantity : EntityBase
{
public virtual Part Part { get; set; }
public int Quantity { get; set; }
public int PartId { get; internal set; }
}
Где Part
public class Part : EntityBase
{
public string OEMNumber { get; set; }
public string BellNumber { get; set; }
public string Description { get; set; }
public string CountryOfOrigin { get; set; }
[Column(TypeName = "decimal(9, 3)")]
public double Weight { get; set; }
public virtual StockQuantity StockQuantity { get; set; }
public virtual ICollection<PartQuantity> PartQuantities { get; set; }
public virtual CountryCode CountryCode { get; set; }
}
К которой я привязываюсь DataGrid
<DataGrid ItemsSource="{Binding StockQuantities}"
SelectedItem="{Binding SelectedStockQuantity}"
x:Name="dataGridConsignments"
Margin="10,47,10,9.6"
ColumnWidth="*" AutoGenerateColumns="False" CanUserAddRows="True">
<i:Interaction.Triggers>
<i:EventTrigger EventName="CellEditEnding">
<i:InvokeCommandAction Command="{Binding UpdateQuantity}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Header="Bell Number" Width="100" Binding="{Binding Part.BellNumber}"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="False" Header="Description" Binding="{Binding Part.Description}"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="False" Header="COO" Binding="{Binding Part.CountryCode.Code}"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="False" Header="Quantity" Width="100" Binding="{Binding Quantity,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding RowDoubleClick}"/>
</DataGrid.InputBindings>
</DataGrid>
В моем ViewModel
У меня есть эта команда, которая запускается всякий раз, когда редактируется ячейка:
public ICommand UpdateQuantity
{
get
{
return updateQuantity
?? (updateQuantity = new ActionCommand(() =>
{
if (SelectedStockQuantity == null)
return;
var stockQ = AllStockQuantities.FirstOrDefault(sq => SelectedStockQuantity.Id == sq.Id);
if (stockQ == null)
return;
StandardDatabase.Commands.UpdateStockQuantity(stockQ.Part.Id, SelectedStockQuantity.Quantity, SelectedStockQuantity.Part.CountryCode.Code);
}));
}
}
Проблема в том, что при запуске команды я вижу обновленное значение для Quantity
(которое является свойством корневого уровняStockQuantity
), но когда я пытаюсь обновить CountryCode
или Description
, исходное значение все еще сохраняется в SelectedStockQuantity
, и поэтому оно не обновляется в БД.
Кто-нибудь знаеткак я могу заставить SelectedStockQuantity
обновить свойства дочернего объекта в этом контексте?