Итак, я получил свою таблицу адресов и таблицу контрактов.Я хочу перебрать все контракты и сгенерировать некоторые Dtos из них, но с адресом-именем и номером вместо идентификатора (guid).Моя проблема в том, что в таблице адресов есть 4 внешних ключа из таблицы контрактов.Могу ли я сделать это как-нибудь с помощью объединения, или, может быть, даже с несколькими?
Это то, что я сейчас пытаюсь:
var contracts = context.Contracts
.Join(context.Addresses,
(con => con.AddressId),
(adr => adr.AddressId),
(con,adr)
=> new { contractInfo = con, addressInfo = adr });
foreach(var a in contracts) {
new MyDto() {
AddressId = a.addressInfo.AddressNumber,
AddressName = a.addressInfo.FullName,
Date= a.contractInfo.Date,
AnotherDate = a.contractInfo.AnotherDate,
Text = a.contractInfo.Text,
VerweisAdrId = a.addressInfo. // ???
VerweisAdrName = a.addressInfo. // 2 more cases like this would follow
}
}
Мой другой подход, вероятно, будет генерировать слишком много запросов:
var addresses = context.Addresses;
var contracts = context.Contracts;
foreach(var a in contracts) {
new MyDto() {
AddressId = addresses.Where(x => a.AddressId == x.AddressId).Select(y => y.AddressNumber);
AddressName = addresses.Where(x => a.AddressId == x.AddressId).Select(y => y.FullName);
Date= a.Date,
AnotherDate = a.AnotherDate,
Text = a.Text,
VerweisAdrId = addresses.Where(x => a.VerweisAdrId == x.AddressId).Select(y => y.AddressNumber);
VerweisAdrName = addresses.Where(x => a.VerweisAdrId == x.AddressId).Select(y => y.FullName);
}
}