如果我在本地安装了 SQL Server 2008 和 SQL Server 2012,我会自己尝试一下;但是我只安装了较新的版本,并希望保持这种状态。
Microsoft.SqlServer.Types.dll
, 主要版本 10。Microsoft.SqlServer.Types.dll
, 主要版本 11。除其他外,这两个程序集都公开了一个
SqlGeometryBuilder
type .两个汇编版本之间的一个显着区别是 2012 类型有一个额外的重载方法 AddCircularArc
,而 2008 类型则没有。自 it's not exactly trivial (and perhaps a bad idea) to reference both assemblies in parallel ,我想知道我是否可以只使用 2012 版本——即使是针对 SQL Server 2008 实例,只要我不使用
AddCircularArc
.如果他们尝试过这个,任何人都可以分享他们的经验吗?
最佳答案
默认情况下,SqlClient 使用 Microsoft.SqlServer.Types 程序集的 10.0 版(即使您在项目中引用了较新的版本)。当该程序集的两个不同版本同时加载时,您可能会看到奇怪的运行时异常,例如“System.InvalidCastException: Unable to cast object of type 'Microsoft.SqlServer.Types.SqlGeometry' to type 'Microsoft.SqlServer.Types.SqlGeometry' '."...
以下文章描述了必须将较新的 Microsoft.SqlServer.Types 程序集与 SqlClient 一起使用的一些可能性:
Breaking Changes to Database Engine Features in SQL Server 2012
选项是:
我个人喜欢“类型系统版本”连接字符串关键字。请参阅此处的 MSDN 文章:
SqlConnection.ConnectionString Property并搜索“类型系统版本”。
关于sql-server-2008 - Microsoft.SqlServer.Types 的几何 UDT 的 SQL Server 2012 版本是否向后兼容 SQL Server 2008?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675774/