Как связать столбец DataGrid одновременно с 2-мя свойствами?
У меня есть 2 таблицы DataGrid. Когда происходит выделение строки в 1-й таблице, возвращается пустая строка, в которую вводятся данные сущности базы данных. Одно из полей внешний ключ (LineId). Как сделать так, чтобы это поле устанавливалось автоматически? Вот, как делаю я на данный момент:
Таблица 1:
<DataGrid x:Name="AllLines" Margin="5,10,5,5"
AutoGenerateColumns="False" ColumnWidth="*" ItemsSource="{Binding Path=Lines,
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding SelectedLine, Mode=TwoWay}"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Название линии" Binding="{Binding Path=Name}"/>
<DataGridTextColumn Header="Источник" Binding="{Binding Path=Start}" / >
<DataGridTextColumn Header="Потребитель" Binding="{Binding Path=Finish}"/>
<DataGridTextColumn Header="Id" Binding="{Binding Path=LineId}"/>
<DataGrid.Columns>
</DataGrid>
Таблица 2:
```<DataGrid Margin="5,10,5,5" AutoGenerateColumns="False" ColumnWidth="*"
ItemsSource="{Binding LineProperties, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="N участка" MinWidth="40" Binding="{Binding OrderNumber}" />
<DataGridTextColumn Header="IP" MinWidth="30" Binding="{Binding IP}" />
<DataGridTextColumn Header="Длина, м" MinWidth="80" Binding="{Binding Length}" />
<DataGridTextColumn Header="LineId" Binding="{Binding Path=LineId}"/>
<DataGrid.Columns>
</DataGrid>```
Затем, чтобы добавить введенные данные в базу данных, прохожусь циклом по всем итемам из второй таблицы и устанавливаю им свойство LineId по связанному свойству SelectedLine.Id:
foreach (LineProperties lineProperties in LineProperties)
{
lineProperties.LineId = SelectedLine.Id;
}
await requestRepository.AddPropertiesAsync(LineProperties);
Без этого не работает, т.к. LineId - внешний ключ и не может быть равен 0.
Сущности:
[Table("Lines")]
public class Line
{
public int Id { get; set; }
public int RequestId { get; set; }
public string? Name { get; set; }
public string? Start { get; set; }
public string? Finish { get; set; }
//check in
public string Configuration { get; set; }
//check in
public int RatedCurrent { get; set; }
//check in
public string ConductorsMaterial { get; set; }
//enum
public string IP { get; set; }
public IEnumerable<LineProperties>? Properties { get; set; }
public Request Request { get; set; }
}
[Table("LineProperties")]
public class LineProperties
{
public int Id { get; set; }
public int LineId { get; set; }
public int OrderNumber { get; set; }
public string IP { get; set; }
private float length;
public float Length
{
get => length;
set {
length = value;
FixingHangers = (int)(length / 1.5);
}
}
public int? Elbows { get; set; }
public int? TermSwg { get; set; }
public int? TermTr { get; set; }
public int? TElbows { get; set; }
public int? FireBarriers { get; set; }
public int? EndCaps { get; set; }
public int? ExpJoints { get; set; }
public int? EndBoxes { get; set; }
public int? CenterEndBoxes { get; set; }
public int FixingHangers { get; set; }
public List<TapOffBoxes>? Boxes { get; set; }
public string? Remarks { get; set; }
public List<Reductions>? Reductions { get; set; }
}
Идея вот в чем: связать столбец LineId во 2-й таблице одновременно с двумя объектами: 1) SelectedLine.Id 2) поле LineId сущности LineProperties. Есть ли способ?