Függvény túlterhelésének feloldás (entity SQL)
Ez a témakör az Entity SQL-függvények megoldását ismerteti.
Több függvény is definiálható ugyanazzal a névvel, amennyiben a függvények egyedi aláírással rendelkeznek.
Ebben az esetben a következő feltételeket kell alkalmazni annak meghatározásához, hogy egy adott kifejezés melyik függvényre hivatkozik. Ezeket a feltételeket egymás után alkalmazza a rendszer. Az első feltétel, amely csak egyetlen függvényre vonatkozik, a feloldott függvény.
Paraméterszám. A függvényben azonos számú paraméter van megadva a kifejezésben.
Pontos egyezés típus szerint. A függvény minden argumentumtípusa pontosan egyezik a paraméter típusával, vagy a null literál.
Egyezés az altípuson. A függvény minden argumentumtípusa pontosan egyezik, vagy a paramétertípus altípusa, vagy az argumentum a null literál. Abban az esetben, ha több függvény csak a szükséges altípus-átalakítások számában különbözik, a legkisebb altípusú átalakítással rendelkező függvény a feloldott függvény.
Egyeztetés altípuson vagy típus-előléptetésen. A függvény minden argumentumtípusa pontosan egyezik, a paramétertípus altípusa vagy előléptethető, vagy az argumentum a null literál. Abban az esetben is, ha több függvény csak az altípusú konverziók és előléptetések számában különbözik, akkor a legkisebb számú altípusú konverziót és előléptetést tartalmazó függvény a feloldott függvény.
Ha ezen feltételek egyike sem eredményez egyetlen függvény kiválasztását, a függvényhívási kifejezés nem egyértelmű.
Még ha egyetlen függvény is kinyerhető ezekkel a szabályokkal, előfordulhat, hogy az argumentumok nem egyeznek a paraméterekkel. Ebben az esetben hiba merül fel.
Felhasználó által definiált függvények esetén a beágyazott lekérdezési függvények definíciója akkor is elsőbbséget élvez, ha egy modell által definiált függvény olyan aláírással rendelkezik, amely jobb egyezés a felhasználó által definiált függvényhez.