You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			114 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //---------------------------------------------------------------------
 | |
| // <copyright file="SqlVersion.cs" company="Microsoft">
 | |
| //      Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| // </copyright>
 | |
| //
 | |
| // @owner  Microsoft
 | |
| // @backupOwner Microsoft
 | |
| //---------------------------------------------------------------------
 | |
| 
 | |
| namespace System.Data.SqlClient
 | |
| {
 | |
|     using System.Data;
 | |
|     using System.Data.Entity;
 | |
|     using System.Globalization;
 | |
| 
 | |
|     /// <summary>
 | |
|     /// This enum describes the current server version
 | |
|     /// </summary>
 | |
|     internal enum SqlVersion
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// Sql Server 8
 | |
|         /// </summary>
 | |
|         Sql8 = 80,
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Sql Server 9
 | |
|         /// </summary>
 | |
|         Sql9 = 90,
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Sql Server 10
 | |
|         /// </summary>
 | |
|         Sql10 = 100,
 | |
| 
 | |
|         // higher versions go here
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// This class is a simple utility class that determines the sql version from the 
 | |
|     /// connection
 | |
|     /// </summary>
 | |
|     internal static class SqlVersionUtils
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// Get the SqlVersion from the connection. Returns one of Sql8, Sql9, Sql10
 | |
|         /// The passed connection must be open
 | |
|         /// </summary>
 | |
|         /// <param name="connection">current sql connection</param>
 | |
|         /// <returns>Sql Version for the current connection</returns>
 | |
|         internal static SqlVersion GetSqlVersion(SqlConnection connection)
 | |
|         {
 | |
|             System.Diagnostics.Debug.Assert(connection.State == ConnectionState.Open, "Expected an open connection");
 | |
|             int majorVersion = Int32.Parse(connection.ServerVersion.Substring(0, 2), CultureInfo.InvariantCulture);
 | |
|             if (majorVersion >= 10) 
 | |
|             {
 | |
|                 return SqlVersion.Sql10;
 | |
|             }
 | |
|             else if (majorVersion == 9)
 | |
|             {
 | |
|                 return SqlVersion.Sql9;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 System.Diagnostics.Debug.Assert(majorVersion == 8, "not version 8");
 | |
|                 return SqlVersion.Sql8;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         internal static string GetVersionHint(SqlVersion version)
 | |
|         {
 | |
|             switch(version)
 | |
|             {
 | |
|                 case SqlVersion.Sql8:
 | |
|                     return SqlProviderManifest.TokenSql8;
 | |
| 
 | |
|                 case SqlVersion.Sql9:
 | |
|                     return SqlProviderManifest.TokenSql9;
 | |
| 
 | |
|                 case SqlVersion.Sql10:
 | |
|                     return SqlProviderManifest.TokenSql10;
 | |
| 
 | |
|                 default:
 | |
|                     throw EntityUtil.Argument(Strings.UnableToDetermineStoreVersion);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         internal static SqlVersion GetSqlVersion(string versionHint)
 | |
|         {
 | |
|             if (!string.IsNullOrEmpty(versionHint))
 | |
|             {
 | |
|                 switch (versionHint)
 | |
|                 {
 | |
|                     case SqlProviderManifest.TokenSql8:
 | |
|                         return SqlVersion.Sql8;
 | |
| 
 | |
|                     case SqlProviderManifest.TokenSql9:
 | |
|                         return SqlVersion.Sql9;
 | |
| 
 | |
|                     case SqlProviderManifest.TokenSql10:
 | |
|                         return SqlVersion.Sql10;
 | |
|                 }
 | |
|             }
 | |
|             
 | |
|             throw EntityUtil.Argument(Strings.UnableToDetermineStoreVersion);
 | |
|         }
 | |
| 
 | |
|         internal static bool IsPreKatmai(SqlVersion sqlVersion)
 | |
|         {
 | |
|             return sqlVersion == SqlVersion.Sql8 || sqlVersion == SqlVersion.Sql9;
 | |
|         }
 | |
|     }
 | |
| }
 |