2015-06-05 105 views
0

我的問題是我的網站使用WebPages,Entity Framework 6.1.3,c#和SQL CE數據庫。我的一個「數據庫優先」生成的實體類型命名與system.TimeZone類完全相同,但intellisense和IDE沒有正確地拾取/處理名稱衝突。如何限定EF中的實體6

我的問題是如何完全限定代碼中的實體名稱(使用EF 6.1.3,實體上下文)來防止與系統類的名稱衝突。

我有一個現有的數據庫表的EF實現。該表被命名爲「TimeZones」。實體模型是使用數據庫優先方法生成的。

EF複數規則將表名稱翻譯爲名爲「TimeZone」的實體。

問題是,當我嘗試新建「TimeZone」實體時,intellisense認爲我正在嘗試新建「System.TimeZone」類,因爲所有對我的新TimeZOne實例的點引用都是屬性和方法System.TimeZone類。我期望看到我的實體模型的TimeZOne實體的屬性。

我希望能夠用命名空間完全限定我的TimeZone實體,或者在我的代碼頂部的using語句中包含模型的名稱空間。但是,EF 6.1.3 Model屬性爲我提供的「名稱空間」似乎不是真正的命名空間。 EF是從現有數據庫生成的。

+0

就好像intellisense將兩個類名合併成一個類,並默認返回System類。當實體類和系統類具有相同的名稱時,這真的是真正的intellisense是如何工作的嗎?是的,我知道,這是一個程序員錯誤,所有程序員都應該知道corlib中的所有類! – RRRSR

回答

0

讓你的實體類路徑明確,當你聲明的一個對象:

MyApplication.Entities.TimeZone tz = new MyApplication.Entities.TimeZone(); 

或者乾脆:

var tz = new MyApplication.Entities.TimeZone(); 

實體類應該像這樣前面:

namespace MyApplication.Entities 
{ 
    public class Person 
    { 
     // 
    } 
} 
+0

對不起,如此愚蠢,但在我的網站在vs 2013中,我發現「MyApplication」。智力活動沒有這樣的動物。解決方案屬性或項目(網站)屬性中沒有任何內容給我任何提示,我可以在其中找到MyApplication限定符 – RRRSR

+0

此外,我的問題是如何「使您的實體路徑更明確」。 「實體」是我的實體上下文的名稱。我無法找到高級限定符。 – RRRSR

+0

我編輯它。查找關於更多限定符信息的'namespace'關鍵字。 –