1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
using System;
namespace SampleEntityFrameworkProvider
{
/// <summary>
/// This enum describes the current server version
/// </summary>
internal enum StoreVersion
{
/// <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 StoreVersionUtils
{
/// <summary>
/// Get the StoreVersion from the connection. Returns one of Sql9, Sql10
/// </summary>
/// <param name="connection">current sql connection</param>
/// <returns>Sql Version for the current connection</returns>
internal static StoreVersion GetStoreVersion(SampleConnection connection)
{
// We don't have anything unique for Sql
if ((connection.ServerVersion.StartsWith("10.", StringComparison.Ordinal)) ||
(connection.ServerVersion.StartsWith("11.", StringComparison.Ordinal)))
{
return StoreVersion.Sql10;
}
else if (connection.ServerVersion.StartsWith("09.", StringComparison.Ordinal))
{
return StoreVersion.Sql9;
}
else
{
throw new ArgumentException("The version of SQL Server is not supported via sample provider.");
}
}
internal static StoreVersion GetStoreVersion(string providerManifestToken)
{
switch (providerManifestToken)
{
case SampleProviderManifest.TokenSql9:
return StoreVersion.Sql9;
case SampleProviderManifest.TokenSql10:
return StoreVersion.Sql10;
default:
throw new ArgumentException("Could not determine storage version; a valid provider manifest token is required.");
}
}
internal static string GetVersionHint(StoreVersion version)
{
switch (version)
{
case StoreVersion.Sql9:
return SampleProviderManifest.TokenSql9;
case StoreVersion.Sql10:
return SampleProviderManifest.TokenSql10;
}
throw new ArgumentException("Could not determine storage version; a valid storage connection or a version hint is required.");
}
}
}
|