【问题标题】:Non-GPL ADO.NET provider for MySQL?MySQL 的非 GPL ADO.NET 提供程序?
【发布时间】:2012-01-20 04:29:43
【问题描述】:

是否有任何用于 MySQL 的非 GPL ADO.NET 提供程序?

这里有官方的
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

标签: c# asp.net .net mysql ado.net


【解决方案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 说它是,而其他律师说它不是,stackoverflow.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 提供程序构建一个包装类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
相关资源
最近更新 更多