MySQL 的非 GPL ADO.NET 提供程序?
Posted
技术标签:
【中文标题】MySQL 的非 GPL ADO.NET 提供程序?【英文标题】:Non-GPL ADO.NET provider for MySQL? 【发布时间】:2012-01-20 04:29:43 【问题描述】:是否有任何用于
这里有官方的http://dev.mysql.com/downloads/connector/net 但不幸的是,它属于 GPL,而不是 LGPL。
我正在开发一个用于数据库访问的抽象类。 我不在乎抽象层是否会成为 GPL, 但如果它使用 MySQL(我的意思是 MySQL ADO.NET 提供程序,而不是 MySQL 数据库本身),它将是 GPL,因此,任何使用该层的应用程序都是我不想要的... 哦,我知道 nHibernate/Subsonic/otherORM,但它不符合我的需求。
ADO.NET 提供程序当然不使用 ODBC。
编辑/澄清: 请注意,“用于数据库访问的抽象类”并不是指编写我自己的通用 ADO.NET 提供程序。 我的意思是围绕一组已经存在的 ADO.NET 提供程序编写一个包装类。
【问题讨论】:
使用连接器并不会强制您开源该代码,只有在您向连接器添加功能时,您才必须开源该连接器。 @Joseph Le Brech:但那将是 LGPL,GPL 是不同的...... 如果您担心它,只需将其抽象到您的 .cs 文件中即可。 LGPL 用于静态链接库。但是您将动态链接而不向连接器添加任何新功能。如果您真的担心,请使用 sql server。 您对数据适配器的使用可能被解释为聚合,请阅读gnu.org/licenses/gpl-faq.html#MereAggregation 【参考方案1】:我得到了完美的答案:
可以使用System.Data.Odbc
绕过它。
你总是可以说,它是通用的 ODBC,与 MySQL 无关,易于替换。
您在连接字符串中输入的任何内容都是您客户的问题。
如果您通过 ODBC 连接发送的 SQL 仅在 MySQL/MariaDB 中有效,那很遗憾 - 但没有法律问题;)
编辑 - 2016 年更新: 您可以将 MIT 许可的 MySqlConnector 用于 .NET Core(也适用于 .NET) https://github.com/mysql-net/MySqlConnector
【讨论】:
我可以阅读任何资源来将 ODBC 与 MariaDB 一起使用吗?目前我正在开发一个应用程序,我想避免遇到许可问题。【参考方案2】:有 DevArt 的 MySQL 的 ADO.NET 提供程序
http://www.devart.com/dotconnect/mysql/
【讨论】:
我也应该像“无版税”一样添加免费的。【参考方案3】:别再吞下微软的 FUD。
因此,这在 GPL v2 中涵盖,除非您打算修改提供的代码并重新分发它(而不是将其与您自己的应用程序捆绑在一起),您唯一的限制是您需要声明捆绑包包含 GPL v2 .0 许可代码并引用版权所有者(无论如何,对于大多数商业许可软件,您几乎总是需要这样做)。
【讨论】:
关于动态链接是否包含组合工作存在一些争论,FSF 说它是,而其他律师说它不是,***.com/a/1717509/35233 所以它可能有点模糊,而且不确定性来自 FSF。 @symcbean:当然不是。否则我可以将 GPL 程序打包成一个 dll,在 GPL 库之上修改库中的一些函数并出售它。最重要的是,LGPL 没有理由存在…… @Quandary:这正是许多供应商已经合法地做的事情。 @symcbean:如果他们这样做并且库是 GPL 而不是 LGPL,那么这是非法的 AFAIK(尽管正如这些示例所示,人们可以非法地这样做),除非他们通过 GPL v2 许可代码进行通信网络,或者他们不分发软件,在这种情况下,整个讨论无论如何都是毫无意义的。 这里看起来很清楚:opensource.org/licenses/gpl-2.0.php 在底部:此通用公共许可证不允许将您的程序合并到专有程序中。如果您的程序是一个子程序库,您可能会认为允许将专有应用程序与该库链接更有用。如果这是您想要做的,请使用 GNU 库通用公共许可证而不是本许可证。【参考方案4】:但如果它使用 MySQL,它将是 GPL
啊——不。你可以用它甚至不知道它连接到 MySql 的方式对其进行编程。
将所有抽象隔离到一个单独的程序集中。 在此实现您的专有接口(允许)。 将 mySql 的抽象分发为 gpl。完成。
【讨论】:
不,不会的。仅当它使用 MySQL 源代码时,这对于 C# 库来说是不可能的。 MySQL 将保持 GPL,您仍然需要获得 MySQL 许可证,但前提是您使用 MySQL,而不仅仅是在合并驱动程序时。如果是 GPL v3,那就是真的,但它是 GPL v2。 再读一遍我说的话,你把它搞混了——完全。 我想我现在明白你的意思了。不 !我不是在谈论 MySQL。仔细阅读:我说的是“MySQL ADO.NET 提供程序”,当我写“MySQL”时,它指的是“MySQL ADO.NET 提供程序”,它也是 GPL ......我不是在谈论自己编写ADO.NET 提供程序,我说的是使用那些 ADO.NET 提供程序。我当然不打算编写一个完整的 ADO.NET 提供程序。我只是围绕每个 ADO.NET 提供程序构建一个包装类。以上是关于MySQL 的非 GPL ADO.NET 提供程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MS Access 作为 ADO.NET 实体框架的提供者?