2012-04-26 51 views
2

什麼是知道我的代碼第一個實體是否是從直接的代碼的最佳方式(新數據對象())EF代碼第一:最好的方式來識別動態代理

或上下文(Context.DataObjects.First() )

,因爲我沒有阻止我的情況下使用dynamicproxies,我能做到這一點:

protected DataObject() 
    { 
     if (this.GetType().Namespace != "System.Data.Entity.DynamicProxies") 
     { 
      this.Id = IdGenerator.NextId<DataObject>(); 
     } 
    } 

但是這看起來像一個壞的解決方案,因爲的GetType()是昂貴的。

如果你要檢查你必須調用GetType實體類型謝謝

回答

1

。順便說一句。直接在MSDN上推薦解決方案。從獲得的DbContext ObjectContext的情況下,你可以使用:

ObjectContext objectContext = ((IObjectContextAdapter)dbContext).ObjectContext; 
+0

這還不夠好,但我的解決方案會做。 – Proviste 2012-04-26 14:07:30