2011-05-04 35 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 +的一部分。我只是這樣說,讓這個例子更清楚...