title: LinqToSql - An item with the same key has already been added
body: <p>I'm using LinqToSql for a mvc web application. If lots of people hit the web app at roughly the same time, I'm seeing an <code>An item with the same key has already been added.</code> error. The stack for this error looks like:</p>
  
  <pre><code>[ArgumentException: An item with the same key has already been added.]
     System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) +12673712
     System.Data.Linq.DataContext.GetTable(MetaTable metaTable) +286
     System.Data.Linq.DataContext.GetTable() +100
     CableSense.Domain.Repository.Concrete.RoleRepository.GetRolesForUser(String userName) in c:\BuildAgent\work\271278ff356daf1\CableSense.Domain\Repository\Concrete\RoleRepository.cs:84
  </code></pre>
  
  <p>This <em>only</em> happens from my RoleRrovider class, which is a custom implementation of the .net RoleProvider. In there, my ctor gets a repository from Ninject like this:</p>
  
  <pre><code>    public CustomRoleProvider()
      {
          _roleRepository = NinjectMVC3.Resolve&lt;IRoleRepository&gt;();
      }
  </code></pre>
  
  <p>The method that errors:</p>
  
  <pre><code>    public override string[] GetRolesForUser(string username)
      {
          return _roleRepository.GetRolesForUser(username);
      }
  </code></pre>
  
  <p>In my repo is nothing but a linq query which returns the data - the repo instantiates a context internally, nothing is static or shared.</p>
  
  <p>Any ideas why this could be happening?  </p>