Entity Framework Core postgresql Dizi Türü Eşlemesi çalışmıyor
Sep 24 2020
Garip bir sorunum var, belki de kaçırdığım bir şeydir, ancak aşağıdaki LINQ Lambda sorgusuna sahibim:
var ss = ctx.ShipZones.SelectMany(
z => ctx.ShipDecks,
(z, d) =>
new
{
Zone = z.ZIndex,
Deck = d.DIndex,
Value = ctx.Tags
.AsExpandable()
.Include(s => s.TagSettings.Device.System)
.Where(s =>
s.TagSettings.TagTypeId == 171
&& s.TagSettings.Device.System.Id == z.Id
&& s.TagSettings.Device.ControlArea.Contains(d.Id)
)
.Average(s => s.Value)
}
).ToList();
Bu makaleye göre bunun şu şekilde tercüme edilmesi gerekir:
SELECT z.z_index AS "Zone", d.d_index AS "Deck", (
SELECT AVG(t.value)
FROM tags_current_data AS t
INNER JOIN tags_settings AS t0 ON t.tag_id = t0.id
INNER JOIN systems_devices AS s ON t0.device_id = s.id
INNER JOIN systems AS s0 ON s.system_id = s0.id
WHERE ((t0.tag_type_id = 171) AND (s0.id = z.id)) AND (d.id = ANY(s.control_area))) AS "Value"
FROM zones AS z
CROSS JOIN decks AS d
Ama bir şekilde, çevrilen sorgu şu şekildedir:
SELECT z.z_index AS "Zone", d.d_index AS "Deck", (
SELECT AVG(t.value)
FROM tags_current_data AS t
INNER JOIN tags_settings AS t0 ON t.tag_id = t0.id
INNER JOIN systems_devices AS s ON t0.device_id = s.id
INNER JOIN systems AS s0 ON s.system_id = s0.id
WHERE ((t0.tag_type_id = 171) AND (s0.id = z.id)) AND (TRUE = FALSE)) AS "Value"
FROM zones AS z
CROSS JOIN decks AS d
Olması gereken yerde farktır d.id = ANY(s.control_area)öyleTRUE = FALSE
Biri bana neyi yanlış yaptığımı söyleyebilir mi?
Şimdiden teşekkürler,
Julian Dimitrov
Yanıtlar
Julian Sep 25 2020 at 08:36
Sorunumu çözebildim. O ise bu konuda.
Temel olarak:
Varlıklar konfigürasyonundaydı. Varlıktaki
ControlAreaözellikDevicetüründeydiList<long>. Onulong[](uzun dizi) olarak değiştirdiğimde işe yaradı!
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'