2012-05-30 29 views
1

我正在使用ADO.NET模擬上下文生成器從EDMX文件生成我的實體類,以便我可以在單元測試中使用它們。然而,當我生成我的實體,並嘗試建立這個項目,我得到以下錯誤:Ado.NET模擬生成器後不存在日期時間

The type name 'DateTime' does not exist in the type 'MyProject.Models.System' 

中的代碼,日期時間屬性的格式聲明:

public virtual System.DateTime LastActive 

如果我更改系統.DateTime只是DateTime,錯誤清除。不幸的是,這是不實際的,因爲它們中有很多,除了它們將在下次重新生成時被覆蓋。

爲什麼我收到此錯誤,我該如何防止它?

回答

0

它看起來像問題是你有一個類型System。這是一個非常糟糕的主意 - 它會在各地造成這個問題。 (見Eric Lippert's blog posts on this topic瞭解更多詳情...)

聲明這個最具體的方法是:

public virtual global::System.DateTime LastActive { get; set; } 

如果你可以改變發電機創建,應該沒關係......不過個人如果可能的話,我只需更改System類型即可稱爲其他類型。

+0

啊 - 你說得對。我有一個名爲「System」的數據庫表,該腳本正在爲其生成一個類。我如何去修改代碼生成項目? –

+0

@GavinCoates:我期望在實體設計器中有一些生成類型名稱的選擇。 –

+0

感謝喬恩 - 我不知道爲什麼我沒有想到這一點。 –

0

最近有同樣的問題,偶然發現,Jon Skeets的答案幫助我確定了問題,但是有比在* .tt文件中編輯更簡單的解決方案,如果你去設計師,你可以調用你的實體/ class /模型不是系統,而仍然有一個稱爲系統的表。

對我來說,改變表名不是一個選項,因爲我沒有提供數據庫,我只是編碼。

  1. 打開在設計

  2. 的.edmx文件找到表命名系統

  3. 單擊鼠標右鍵,選擇屬性,或單擊它,並期待在右下角

  4. 在「general」類別下找到屬性「name」並將其稱爲與表格不同的內容。

  5. 右擊該.edmx文件並選擇「運行自定義工具」

對我來說,這解決了13個000多個錯誤

如果有人知道如何在不使用更改實體的名稱設計師在評論中寫下它,如果你想的話。

相關問題