2011-12-14 3 views
11

Czy jest jakiś dostawca ADO.NET dla bazy danych MySQL?Dostawca ADO.NET non-GPL dla MySQL?

Istnieje oficjalny stąd
http://dev.mysql.com/downloads/connector/net
ale niestety, to jest na licencji GPL, a nie LGPL.

Zajmuję się tworzeniem klasy abstrakcyjnej dla dostępu do baz danych.
Nie obchodzi mnie, czy warstwa abstrakcji będzie GPL,
, ale jeśli używa MySQL (mam na myśli dostawcę MySQL ADO.NET, a nie samą bazę danych MySQL) to będzie to GPL, a zatem każda aplikacja używa tej warstwy, czego nie chcę ...


Aha, i wiem o nHibernate/Subsonic/otherORMs, ale to nie pasuje do moich potrzeb.

Dostawca ADO.NET oczywiście nie używa ODBC.

Edycja/Wyjaśnienie:
Należy zauważyć, że przez „klasy abstrakcyjnej dla dostępu do bazy danych”, nie mam na myśli napisać własny uniwersalnego dostawcy ADO.NET. Mam na myśli pisanie klasy otoki wokół zestawu już istniejących dostawców ADO.NET.

+0

użycie złącza nie zmusza Cię do otwarcia źródła tego kodu, to tylko jeśli dodałeś funkcję do konektora, musisz wtedy otworzyć źródło tego konektora. –

+1

@ Joseph Le Brech: Ale to byłby LGPL, GPL jest inny ... –

+0

Jeśli martwisz się tym, po prostu streść go w pliku .cs. LGPL jest dla statycznie połączonych bibliotek. ale będziesz dynamicznie łączyć i nie dodawać żadnych nowych funkcji do złącza. Jeśli naprawdę się martwisz, użyj serwera sql. –

Odpowiedz

6

Dostałem doskonałą odpowiedź:

Można użyć System.Data.Odbc dostać się wokół niego.
Zawsze możesz powiedzieć, że to ogólny ODBC, nie ma nic wspólnego z MySQL, łatwo można go zastąpić.
A cokolwiek włożysz w ciąg połączenia, to problem twoich klientów.
Jeśli SQL, aby wysłać przez połączenie ODBC działa w MySQL/MariaDB tylko, że to godne pożałowania - ale nie ma problemu prawnego;)

Edit - 2016 Update:
Można użyć MIT licencjonowany MySqlConnector dla .NET Core (który działa również dla .NET) https://github.com/mysql-net/MySqlConnector

+0

Czy są jakieś zasoby, które mogę przeczytać, aby używać ODBC z MariaDB? Obecnie tworzę aplikację i chcę uniknąć problemów związanych z licencjonowaniem. – masterLoki

0

Przestań połykać Microsoft FUD.

Jest to objęte wersją 2 licencji GPL, chyba że masz zamiar zmodyfikować dostarczony kod i rozpowszechniać go (w przeciwieństwie do łączenia go z własną aplikacją), którego jedynym ograniczeniem jest to, że musisz podać, że pakiet zawiera GPL licencjonowany kod v2.0 i odniesienie do właściciela praw autorskich (prawie zawsze jest to wymagane w przypadku większości programów licencjonowanych komercyjnie).

+1

Istnieje kilka argumentów na temat tego, czy dynamiczne łączenie obejmuje połączone zadanie, które FSF mówi, że podczas gdy inni prawnicy mówią, że tak nie jest, http://stackoverflow.com/a/1717509/35233, więc może to być trochę mgliste, a niepewność pochodzi od FSF. –

+0

@symcbean: Z pewnością nie. Inaczej byłoby możliwe spakowanie programów GPL do biblioteki dll, zmodyfikowanie jakiejś funkcji na górze w bibliotece na górze biblioteki GPL i sprzedanie jej. Co więcej, nie byłoby żadnego powodu, aby LGPL istniało ... –

+0

@Quandary: to jest dokładnie to, co wielu legalnie już robi. – symcbean

0

ale jeśli wykorzystuje MySQL będzie GPL

Ah - nie. Możesz zaprogramować go w taki sposób, że nawet nie wie, że łączy się z MySql.

  • Izoluj wszystkie abstrakcje w oddzielnym zespole.
  • Zaimplementuj swoje własne interfejsy w tym (dozwolone).
  • Rozdziel abstrakcję mySql jako gpl.

Ukończony.

+0

Nie, nie będzie. Tylko jeśli używa kodu źródłowego MySQL, co jest mało prawdopodobne w przypadku biblioteki C#. MySQL pozostanie GPL i nadal będziesz potrzebować licencji MySQL, ale tylko wtedy, gdy użyjesz MySQL, a nie tylko wtedy, gdy włączysz sterownik. Jeśli byłby to GPL v3, to byłaby to prawda, ale jest to GPL v2. –

+0

Przeczytaj, co powiem jeszcze raz, wymieszałeś to - całkowicie. – TomTom

+0

Myślę, że mam już to, o co ci chodziło. NIE! Nie mówiłem o MySQL. Przeczytaj uważnie: mówiłem o "Dostawcau MySQL ADO.NET", a kiedy piszę "MySQL", odnosi się to do "dostawcy MySQL ADO.NET", który jest również GPL ... Nie mówiłem o pisaniu własnych Dostawca ADO.NET, mówię o korzystaniu z tych dostawców ADO.NET. Na pewno nie zamierzam pisać całego dostawcy ADO.NET. Po prostu buduję klasę otoki wokół każdego dostawcy ADO.NET. –