internal static IDbExecutionStrategy GetExecutionStrategy( DbConnection connection, MetadataWorkspace metadataWorkspace) { StoreItemCollection itemCollection = (StoreItemCollection)metadataWorkspace.GetItemCollection(DataSpace.SSpace); return(DbProviderServices.GetExecutionStrategy(connection, itemCollection.ProviderFactory, (string)null)); }
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)); }