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 提供程序?的主要内容,如果未能解决你的问题,请参考以下文章

巩固ADO.NET

ssis

如何使用 MS Access 作为 ADO.NET 实体框架的提供者?

Ado.NET SqlDataReader详解

无法加载具有不变名称“System.Data.SqlServerCe.4.0”的 ADO.NET 提供程序

使应用程序与多个 ado.net 提供商一起工作的最佳方法是啥?