2012-02-14 70 views
0

我試圖更新具有某些外鍵列的實體。一切似乎都很好,但在第一次分配時,需要1分多鐘,但如果我再次執行相同的操作,它會立即出現。使用外鍵更新列在Entity Framework中首次執行超過1分鐘

代碼段:

public bool UpdateStatus(DetailDataModel DetailDataModel) 
    { 
     Details updateStatus = (from d in UnitOfWork.Details 
          where d.Id == DetailDataModel.Id 
          select d).FirstOrDefault(); 
     updateStatus.StatusId = DetailDataModel.StatusId; 
     UnitOfWork.Commit(); 
     return true; 
    } 

下面是罪魁禍首行:

updateStatus.StatusId = updateStatus.StatusId; 

我無法找到的問題,但是,當嘗試更新同一實體的其他列,它工作正常,問題只有Foreignkey列。與Entity框架關聯有沒有限制?

請提出您的想法,在此先感謝。

回答

1

我猜你正在使用POCO T4發電機,你必須延遲加載在這種情況下啓用,因爲延遲可以很容易解釋 - 在生成的POCO類fixup methods將導致其所有相關的轉懶加載狀態實體和延遲加載細節。

如果您不需要延遲加載此操作嘗試關閉它在你的情況下,否則你將不得不從實體模型刪除循環引用(Status不會有導航屬性Details)或修改T4模板,並刪除那些fixup調用。

+0

是的,你是正確的,我使用POCO模板,只和你提到建立修正關係需要更多時間。但我的觀點是,只有當我將其默認狀態更改爲其他內容時纔會發生,但一旦默認狀態發生變化,它每次都能正常工作。順便說一下,我怎麼能刪除特殊行動的懶惰加載,而我需要的所有其他地方。非常感謝您的回答。 – linktoarun 2012-02-15 18:59:49

0

禁用延遲加載ObjectContext的工作,因爲它不是必需的只是更新語句,一個列,以便預先加載,下面的代碼工作:

UnitOfWork.EnableLazyLoading = false; 
相關問題