我们正在开发一种可能会或可能不会针对不同数据库具有不同许可架构的产品。特别是,较低层的产品可以在SQLExpress上运行,但我们不希望最终用户能够使用“全脂”SQL安装 - 受益于降价。显然,对于其他数据库也必须如此,因此Oracle可能会比SQL更高的价格(假设)。
我们正在使用Entity Framework。显然,这隐藏了访问核心模式和使用sp_version或其他任何东西的所有优点。我们宁愿不通过运行一系列SQL命令(每个平台一个)来预加载条件,并查看返回的内容,因为这会限制我们的数据库选项。但如果是必要的话,我们已经准备好了。
那么,是否有可能使用EF本身? DBContext.COnnection.ServerVersion只返回类似“9.00.1234”(对于SQL Server 2005)。我会假设(虽然还没有检查 - 需要安装一个实例)SQLExpress会返回类似的东西 - “假装”它是全脂的。显然,我们没有Oracle / MySQL /等。实例所以无法确定是否返回文本“Oracle”或其他任何内容。
答案 0 :(得分:1)
我无法对Entity Framework本身发表评论,但对于MS SQL Server,您可以使用T-SQL函数SERVERPROPERTY来检测与许可证/成本相关的额外信息
SELECT
SERVERPROPERTY('LicenseType'),
SERVERPROPERTY('NumLicenses'),
SERVERPROPERTY('EngineEdition'),
SERVERPROPERTY('Edition')
否则,它只是没有在客户端代码中公开