2011-01-10 51 views
2

我試圖對我們的實體框架模型進行一些更改,目前這給我造成了很大的麻煩 - 這個想法是將兩個數據庫之間的1:1關係變成多關係。如果您在EF中進行更改,然後重新生成數據庫,則它生成的用於表示此關係的對象(不出意外)是EntityCollection而不是單個類型對象。爲什麼EntityCollection有時會暴露擴展方法,有時不會?

目前,我已經運行了所有這些更改生成的錯誤,並將DatabaseObject引用更改爲DatabaseObject.ElementAt(0),以便我可以構建它。然而,一組引用似乎不會給我EntityCollection上的擴展方法,它允許我們對集合進行操作,比如ElementAt(),Select(),First()等等,我看不出爲什麼。

在這項工作中的情況下,從一個基類,然後繼承生成對象:

  _task = _customersRepository.GetDeepTask(taskId); 
      _customerService = _task.CustomerServiceFeature.CustomerService; 

      //then in class which inherits above code 

      string conStr = customerService.DatabaseObject.ElementAt(0).GetConnectionString(_customerService); 

但是這並沒有給我的擴展方法的情況下,它是這樣產生的:

public void Execute(ScheduledTask task) 
    { 
     CustomerService service = task.CustomerServiceFeature.CustomerService; 
     //this errors and doesn't offer extension methods 
     string ConnectionString = service.DatabaseObject.GetConnectionString(service); 
    } 

我看不出爲什麼這兩個實例的行爲不同?

乾杯, 馬特

回答

5

你需要一個using聲明包含擴展方法的類的命名空間。

E.g.看到IEnumerable<T>IQueryable<T>SelectWhere擴展方法,需要有一個

using System.Linq; 
在你的代碼

+0

謝謝。我是積極的,我試圖沒有效果 - 但嘗試了第二次,它工作正常。 VS第一次肯定會有些滯後,謝謝你鼓勵我再看一次! – 2011-01-10 11:22:59

相關問題