Jeg fraråder på det kraftigste, at klientprogrammer forbinder direkte til en databaseserver over internettet af følgende årsager:
- Kundebiblioteker er designet og bygget omkring den antagelse, at databasen er under et par millisekunder væk, især meget chatty-protokoller (MSSQL er blandt disse). Korte operationer kan derfor tage betydeligt længere tid.
- Det er et sikkerhedsansvar, du udsætter ikke kun din databaseserver for internettet, men du indlejrer også forbindelsesdetaljer (såsom adgangskoder) i din applikation.
- Det egner sig ikke til skalerbarhed. Hvad hvis du introducerer flere belastningsbalancerede eller failover-databaseservere, bliver du nødt til at omskrive din klient.
- Det forudsætter også, at der ikke vil være nogen forbindelsesproblemer. Mange netværk (især mobilnetværk) begrænser aktivitet uden for port 80/443 for at forhindre misbrug af deres netværk (såsom zombiebrugere, der lancerer angreb).
Den ideelle løsning i disse tilfælde er at udvikle en web-service frontend til din database; din applikation vil så have en grænseflade med web-servicen i stedet for din database. Dette har andre fordele.
Selvfølgelig skal klienter (især mobile klienter) bruge en datacache, så applikationen fortsætter med at fungere, når den er offline.
Tilbage til emnet:forudsat at du stadig ønsker at gå med en direkte forbindelse, så kan jeg ikke se, hvorfor MySQL-klientbiblioteket ikke vil fungere på 4.5. Du kan ændre en samlings manifest/konfiguration, så den kører på fremtidige versioner af .NET CLR (du vil kun løbe ind i problemer, hvis nævnte bibliotek bruger siden-fjernede typer og medlemmer eller er afhængig af ændret adfærd. .NET frameworket har et godt ry for baglæns og fremad kompatibilitet).