internal static IDbExecutionStrategy GetExecutionStrategy(
            DbConnection connection,
            MetadataWorkspace metadataWorkspace)
        {
            StoreItemCollection itemCollection = (StoreItemCollection)metadataWorkspace.GetItemCollection(DataSpace.SSpace);

            return(DbProviderServices.GetExecutionStrategy(connection, itemCollection.ProviderFactory, (string)null));
        }
예제 #2
0
            public void Static_method_returns_the_ExecutionStrategy_from_resolver()
            {
                var connectionMock = new Mock <DbConnection>();

                connectionMock.Setup(m => m.DataSource).Returns("FooSource");

                var model = new EdmModel(DataSpace.SSpace);

                model.ProviderInfo     = new DbProviderInfo("System.Data.FakeSqlClient", "2008");
                model.ProviderManifest = new SqlProviderManifest("2008");

                var storeItemCollectionMock = new Mock <StoreItemCollection>(model)
                {
                    CallBase = true
                };

                var metadataWorkspaceMock = new Mock <MetadataWorkspace>();

                metadataWorkspaceMock.Setup(m => m.GetItemCollection(DataSpace.SSpace)).Returns(storeItemCollectionMock.Object);

                var entityConnection = new EntityConnection(
                    workspace: null, connection: connectionMock.Object, skipInitialization: true, entityConnectionOwnsStoreConnection: false);

                var mockExecutionStrategy = new Mock <IExecutionStrategy>().Object;

                MutableResolver.AddResolver <Func <IExecutionStrategy> >(
                    k =>
                {
                    var key = k as ExecutionStrategyKey;
                    Assert.Equal("System.Data.FakeSqlClient", key.ProviderInvariantName);
                    Assert.Equal("FooSource", key.ServerName);
                    return((Func <IExecutionStrategy>)(() => mockExecutionStrategy));
                });

                var providerFactoryServiceMock = new Mock <IDbProviderFactoryService>();

                providerFactoryServiceMock.Setup(m => m.GetProviderFactory(It.IsAny <DbConnection>()))
                .Returns(FakeSqlProviderFactory.Instance);

                MutableResolver.AddResolver <IDbProviderFactoryService>(k => providerFactoryServiceMock.Object);
                try
                {
                    Assert.Same(mockExecutionStrategy, DbProviderServices.GetExecutionStrategy(connectionMock.Object));
                    Assert.Same(
                        mockExecutionStrategy, DbProviderServices.GetExecutionStrategy(entityConnection, metadataWorkspaceMock.Object));
                }
                finally
                {
                    MutableResolver.ClearResolvers();
                }
            }
            public void Static_method_dispatches_to_interceptors()
            {
                var dbConnectionInterceptorMock = new Mock <IDbConnectionInterceptor>();

                var model = EdmModel.CreateStoreModel(
                    new DbProviderInfo("System.Data.FakeSqlClient", "2008"),
                    new SqlProviderManifest("2008"));

                var storeItemCollectionMock = new Mock <StoreItemCollection>(model)
                {
                    CallBase = true
                };

                var metadataWorkspaceMock = new Mock <MetadataWorkspace>();

                metadataWorkspaceMock.Setup(m => m.GetItemCollection(DataSpace.SSpace)).Returns(storeItemCollectionMock.Object);

                var connectionMock   = new Mock <DbConnection>();
                var entityConnection = new EntityConnection(
                    workspace: null, connection: connectionMock.Object, skipInitialization: true, entityConnectionOwnsStoreConnection: false);

                DbInterception.Add(dbConnectionInterceptorMock.Object);
                try
                {
                    DbProviderServices.GetExecutionStrategy(entityConnection, metadataWorkspaceMock.Object);
                }
                finally
                {
                    DbInterception.Remove(dbConnectionInterceptorMock.Object);
                }

                dbConnectionInterceptorMock.Verify(
                    m => m.DataSourceGetting(It.IsAny <DbConnection>(), It.IsAny <DbConnectionInterceptionContext <string> >()),
                    Times.Once());
                dbConnectionInterceptorMock.Verify(
                    m => m.DataSourceGot(It.IsAny <DbConnection>(), It.IsAny <DbConnectionInterceptionContext <string> >()),
                    Times.Once());
            }
 /// <summary>
 /// Gets the <see cref="T:System.Data.Entity.Infrastructure.IDbExecutionStrategy" /> that will be used to execute methods that use the specified connection.
 /// This overload should be used by the derived classes for compatability with wrapping providers.
 /// </summary>
 /// <param name="connection">The database connection</param>
 /// <param name="providerInvariantName">The provider invariant name</param>
 /// <returns>
 /// A new instance of <see cref="T:System.Data.Entity.Infrastructure.DbExecutionStrategy" />
 /// </returns>
 protected static IDbExecutionStrategy GetExecutionStrategy(
     DbConnection connection,
     string providerInvariantName)
 {
     return(DbProviderServices.GetExecutionStrategy(connection, DbProviderServices.GetProviderFactory(connection), providerInvariantName));
 }
 /// <summary>
 /// Gets the <see cref="T:System.Data.Entity.Infrastructure.IDbExecutionStrategy" /> that will be used to execute methods that use the specified connection.
 /// </summary>
 /// <param name="connection">The database connection</param>
 /// <returns>
 /// A new instance of <see cref="T:System.Data.Entity.Infrastructure.DbExecutionStrategy" />
 /// </returns>
 public static IDbExecutionStrategy GetExecutionStrategy(
     DbConnection connection)
 {
     return(DbProviderServices.GetExecutionStrategy(connection, DbProviderServices.GetProviderFactory(connection), (string)null));
 }