1
Nová témata / .NET F# SQLProvider - leftOuterJoin
« Poslední příspěvek od fortran1986 kdy Dnes v 16:56:24 »Ahojte pouzivam v jednej F# appke SQLProvider
https://fsprojects.github.io/SQLProvider/
na pristup k DB. Funguje to krasne a mozem zapisovat dotazy priamo v jazyku F# co je fajn, lebo nemusim nic escapovat a mam to pekne v jednom jazyku (F#). Klasicky (inner) join sa robi takto:
ale ako zapisat leftOuterJoin? LINQ pre F# normalne podporuje keyword leftOuterJoin, ale zda sa ze SQL Provider pre MS SQL ma s tymto zapisom problem. Skusal som toto:
A hadze mi to runtime error:
Ako sa teda zapisuje leftOuterJoin pre SQL Provider? Ci mam v DB spravit View a az na ten sa dotazovat? Ale nechce sa mi verit ze by SQL Provider leftOuterJoin a rightOuterJoin nepodporoval. Ved to je uplne zakladna vec pre kazdu DB.
https://fsprojects.github.io/SQLProvider/
na pristup k DB. Funguje to krasne a mozem zapisovat dotazy priamo v jazyku F# co je fajn, lebo nemusim nic escapovat a mam to pekne v jednom jazyku (F#). Klasicky (inner) join sa robi takto:
Kód: [Vybrat]
query {
for country in dc.Dbo.Countries do
where country.IsEnabled
join city in dc.Dbo.Cities on (country.Id = city.CountryId)
sortBy country.Name
thenBy city.Name
select (country.Id, country.Name, city.Id, city.Name, city.IsCapital)
}
ale ako zapisat leftOuterJoin? LINQ pre F# normalne podporuje keyword leftOuterJoin, ale zda sa ze SQL Provider pre MS SQL ma s tymto zapisom problem. Skusal som toto:
Kód: [Vybrat]
query {
for country in dc.Dbo.Countries do
where country.IsEnabled
leftOuterJoin city in dc.Dbo.Cities on (country.Id = city.CountryId) into cities'
for city' in cities'.DefaultIfEmpty() do
sortBy country.Name
thenBy city'.Name
select (country.Id, country.Name, city'.Id, city'.Name, city'.IsCapital)
}
A hadze mi to runtime error:
Kód: [Vybrat]
System.Exception: 'unrecognised method call value(FSharp.Data.Sql.Runtime.QueryImplementation+SqlQueryable`1[FSharp.Data.Sql.Common.SqlEntity]).GroupJoin(value(FSharp.Data.Sql.Runtime.QueryImplementation+SqlQueryable`1[FSharp.Data.Sql.Common.SqlEntity]), country => country.GetColumn("Id"), city => city.GetColumn("CountryId"), (country, cities') => new AnonymousObject`2(Item1 = country, Item2 = cities'.DefaultIfEmpty()))'
Ako sa teda zapisuje leftOuterJoin pre SQL Provider? Ci mam v DB spravit View a az na ten sa dotazovat? Ale nechce sa mi verit ze by SQL Provider leftOuterJoin a rightOuterJoin nepodporoval. Ved to je uplne zakladna vec pre kazdu DB.