private void TestEquals(Func<object, object, bool> equals) { var sameInstace = new ExecutionStrategyKey("a", "b"); Assert.True( equals( sameInstace, sameInstace)); Assert.True( equals( new ExecutionStrategyKey("a", "b"), new ExecutionStrategyKey("a", "b"))); Assert.True( equals( new ExecutionStrategyKey("a", null), new ExecutionStrategyKey("a", null))); Assert.False( equals( new ExecutionStrategyKey("a", "b1"), new ExecutionStrategyKey("a", "b2"))); Assert.False( equals( new ExecutionStrategyKey("a", null), new ExecutionStrategyKey("a", "b2"))); Assert.False( equals( new ExecutionStrategyKey("a1", "b"), new ExecutionStrategyKey("a2", "b"))); Assert.False( equals( new ExecutionStrategyKey("a", "b"), null)); }
private void TestEquals(Func <object, object, bool> equals) { var sameInstace = new ExecutionStrategyKey("a", "b"); Assert.True( equals( sameInstace, sameInstace)); Assert.True( equals( new ExecutionStrategyKey("a", "b"), new ExecutionStrategyKey("a", "b"))); Assert.False( equals( new ExecutionStrategyKey("a", "b1"), new ExecutionStrategyKey("a", "b2"))); Assert.False( equals( new ExecutionStrategyKey("a1", "b"), new ExecutionStrategyKey("a2", "b"))); Assert.False( equals( new ExecutionStrategyKey("a", "b"), null)); }
/// <inheritdoc /> public override bool Equals(object obj) { ExecutionStrategyKey executionStrategyKey = obj as ExecutionStrategyKey; if (object.ReferenceEquals((object)executionStrategyKey, (object)null) || !this.ProviderInvariantName.Equals(executionStrategyKey.ProviderInvariantName, StringComparison.Ordinal)) { return(false); } if (this.ServerName == null && executionStrategyKey.ServerName == null) { return(true); } if (this.ServerName != null) { return(this.ServerName.Equals(executionStrategyKey.ServerName, StringComparison.Ordinal)); } return(false); }
private static IExecutionStrategy GetExecutionStrategy( DbConnection connection, DbProviderFactory providerFactory) { var entityConnection = connection as EntityConnection; if (entityConnection != null) { connection = entityConnection.StoreConnection; } // Using the type name of DbProviderFactory implementation instead of the provider invariant name for performance var cacheKey = new ExecutionStrategyKey(providerFactory.GetType().FullName, connection.DataSource); var factory = _executionStrategyFactories.GetOrAdd( cacheKey, k => DbConfiguration.GetService<Func<IExecutionStrategy>>( new ExecutionStrategyKey( DbConfiguration.GetService<IProviderInvariantName>(providerFactory).Name, connection.DataSource))); return factory(); }
private static IDbExecutionStrategy GetExecutionStrategy( DbConnection connection, DbProviderFactory providerFactory, string providerInvariantName = null) { var entityConnection = connection as EntityConnection; if (entityConnection != null) { connection = entityConnection.StoreConnection; } var dataSource = DbInterception.Dispatch.Connection.GetDataSource(connection, new DbInterceptionContext()); // Using the type name of DbProviderFactory implementation instead of the provider invariant name for performance var cacheKey = new ExecutionStrategyKey(providerFactory.GetType().FullName, dataSource); var factory = _executionStrategyFactories.GetOrAdd( cacheKey, k => DbConfiguration.DependencyResolver.GetService<Func<IDbExecutionStrategy>>( new ExecutionStrategyKey( providerInvariantName ?? DbConfiguration.DependencyResolver.GetService<IProviderInvariantName>(providerFactory).Name, dataSource))); return factory(); }