2011-05-04 117 views
0

我有使用实体框架和COM +的问题。其体系结构如下:实体框架和COM +

  • windows服务每n分钟调用一次COM的四种方法。
  • COM +然后调用业务层上的相应方法。
  • 业务层调用DAL。 DAL然后将列表返回给业务层。这是通过调用.ToList()

当我尝试运行该服务时,DAL方法返回超时内部异常。当我尝试从企业管理器查看表时,它也会返回超时!从我看到的,SELECT语句阻塞其他连接实例。

是否有其他人遇到类似问题?

P.S.我不能发布任何代码,因为我不在工作中......明天会这样做。

回答

0

那么,看起来,实体框架并没有与上述任何一个。事实证明,问题出在COM +中。我应该用ContextUtil.SetComplete()结束每个COM +的方法。显然,我没有这样做,所以交易保持活跃,并在第一次几个电话后,它锁定了我的分贝。

例如

Using MyEntity As New EntityObject 
    MyEntity.Connection.Open() 
    Dim rows = From tbl In MyEntity.MyTable _ 
       Select tbl 
    list = rows.ToList 
End Using 

ContextUtil.SetComplete() 

请注意,如果发生异常,您应该放置一个ContextUtil.SetAbort()。我还要指出,上面的代码是混合的。它是我的DAL层的一部分,也是我的COM +的一部分。我只是这样说,让这个例子更清楚...