public void GetSpatialServices_with_EntityConnection_uses_store_manifest_to_build_key()
            {
                var mockItemCollection = new Mock <StoreItemCollection>();

                mockItemCollection.Setup(m => m.ProviderInvariantName).Returns("New.York");
                mockItemCollection.Setup(m => m.ProviderManifestToken).Returns("Conversation");

                var mockWorkspace = new Mock <MetadataWorkspace>();

                mockWorkspace.Setup(m => m.GetItemCollection(DataSpace.SSpace)).Returns(mockItemCollection.Object);

                var mockConnection = new Mock <EntityConnection>();

                mockConnection.Setup(m => m.GetMetadataWorkspace()).Returns(mockWorkspace.Object);

                var mockSpatialServices = new Mock <DbSpatialServices>();
                var mockResolver        = new Mock <IDbDependencyResolver>();

                mockResolver.Setup(
                    m => m.GetService(
                        typeof(DbSpatialServices),
                        new DbProviderInfo("New.York", "Conversation"))).Returns(mockSpatialServices.Object);

                Assert.Same(
                    mockSpatialServices.Object,
                    DbProviderServices.GetSpatialServices(mockResolver.Object, mockConnection.Object));
            }
        internal static DbSpatialServices GetSpatialServices(
            IDbDependencyResolver resolver,
            EntityConnection connection)
        {
            StoreItemCollection itemCollection = (StoreItemCollection)connection.GetMetadataWorkspace().GetItemCollection(DataSpace.SSpace);
            DbProviderInfo      key            = new DbProviderInfo(itemCollection.ProviderInvariantName, itemCollection.ProviderManifestToken);

            return(DbProviderServices.GetSpatialServices(resolver, key, (Func <DbProviderServices>)(() => DbProviderServices.GetProviderServices(connection.StoreConnection))));
        }
            public void GetSpatialServices_with_EntityConnection_uses_provider_from_store_connection_if_resolver_returns_null()
            {
                var mockItemCollection = new Mock <StoreItemCollection>();

                mockItemCollection.Setup(m => m.ProviderInvariantName).Returns("I'm.So.Free");
                mockItemCollection.Setup(m => m.ProviderManifestToken).Returns("2008");

                var mockWorkspace = new Mock <MetadataWorkspace>();

                mockWorkspace.Setup(m => m.GetItemCollection(DataSpace.SSpace)).Returns(mockItemCollection.Object);

                var mockConnection = new Mock <EntityConnection>();

                mockConnection.Setup(m => m.GetMetadataWorkspace()).Returns(mockWorkspace.Object);
                mockConnection.Setup(m => m.StoreConnection).Returns(new SqlConnection());

                Assert.Same(
                    SqlSpatialServices.Instance,
                    DbProviderServices.GetSpatialServices(new Mock <IDbDependencyResolver>().Object, mockConnection.Object));
            }
 /// <summary>Gets the spatial services for the <see cref="T:System.Data.Entity.Core.Common.DbProviderServices" />.</summary>
 /// <returns>The spatial services.</returns>
 /// <param name="key">Information about the database that the spatial services will be used for.</param>
 public DbSpatialServices GetSpatialServices(DbProviderInfo key)
 {
     return(DbProviderServices.GetSpatialServices(this._resolver.Value, key, (Func <DbProviderServices>)(() => this)));
 }