代码之家  ›  专栏  ›  技术社区  ›  Raj

使用相同datacontext的多个查询引发SqlException

  •  1
  • Raj  · 技术社区  · 15 年前

    我尝试用我的搜索类型来实现搜索。我使用linqtosql对数据库进行查询。虽然它通常工作得很好,但是当用户输入查询的速度非常快时,会抛出一些随机的SqlException。以下是我最近偶然发现的两个不同的错误消息:

    读卡器关闭时调用Read的尝试无效。

    DataContextFactory类:

    public DataContextFactory(IConnectionStringFactory connectionStringFactory)
    {
        this.dataContext = new RegionDataContext(connectionStringFactory.ConnectionString);
    }
    
    public DataContext Context
    {
        get { return this.dataContext; }
    }
    
    public void SaveAll()
    {
        this.dataContext.SubmitChanges();
    }
    

    向Unity注册IDataContextFactory

    // Get connection string from Application.Current settings
    ConnectionInfo connectionInfo = Application.Current.Properties["ConnectionInfo"] as ConnectionInfo;
    // Register ConnectionStringFactory with Unity container as a Singleton
    this.container.RegisterType<IConnectionStringFactory, ConnectionStringFactory>(new ContainerControlledLifetimeManager(),
        new InjectionConstructor(connectionInfo.ConnectionString));
    // Register DataContextFactory with Unity container
    this.container.RegisterType<IDataContextFactory, DataContextFactory>();
    

    Data Source=.\SQLEXPRESS2008;User Instance=true;Integrated Security=true;AttachDbFilename=C:\client.mdf;MultipleActiveResultSets=true;
    

    // IDataContextFactory dependency is injected by Unity
    public CompanyRepository(IDataContextFactory dataContextFactory)
    {
        this.dataContextFactory = dataContextFactory;
    }
    
    // return List<T> of companies
    var results = this.dataContextFactory.Context.GetTable<CompanyEntity>()
            .Join(this.dataContextFactory.Context.GetTable<RegionEntity>(),
                c => c.regioncode,
                r => r.regioncode,
                (c, r) => new { c = c, r = r })
            .Where(t => t.c.summary_region != null)
            .Select(t => new { Id = t.c.compcode, Company = t.c.compname, Region = t.r.regionname }).ToList();
    

    周围的工作是什么?

    1 回复  |  直到 4 年前
        1
  •  0
  •   ross    14 年前

    它不是需要MARS在连接字符串中的东西吗?

    http://msdn.microsoft.com/en-us/library/h32h3abf(VS.80).aspx

    推荐文章