2011-05-19 25 views
1

我創建了一個名爲EF的ADO.NET模型,並添加了一個DbContext生成器,該生成器用EF.tt和.cs文件填充我的/ Model文件夾,每個實體一個。ADO.NET無法生成無參數構造函數

一般來說,系統會創建具有無參數構造函數的類...由於某些原因,我無法理解我有一個實體缺少這個構造函數。它不是一個抽象類,沒有基類型並且具有公共訪問權限。我有很多其他類,但它們都有無參數的構造函數。我用google搜索了一下,看看周圍VS試圖找出這個特別的東西,以及如何讓它生成構造函數,但找不到答案。

我總是可以在部分的定義中創建這個,但我寧願弄明白。另外,如果我在EF.tt上右鍵單擊,我會在名爲「運行自定義工具」的菜單中看到一個選項,但是當我選擇它時似乎沒有任何事情發生。如何重新生成.cs文件?

p.s.是的,我已經清理並重建瞭解決方案,以防萬一它出現混亂但仍然存在問題

回答

3

在C#(您正在使用C#):

  • 當你定義沒有構造你們班,一個無參數的構造函數會被編譯器創建默認
  • 當你定義參數的構造函數(也許其他一些)無參數的構造函數也會按照你的定義存在
  • 當你定義多於零的構造函數但沒有無參數的構造函數時,編譯器不會爲創建一個無參數的構造函數ü。在這種情況下,您有責任對其進行定義(在部分課堂中)。
+0

是C#,並解釋它。完善。非常感謝你們兩位 – ekkis 2011-05-19 22:32:51

1

缺省構造函數默認存在,但不會生成。如果類沒有任何明確定義的構造函數,它總是有默認的無參數構造函數。如果你在其他地方指定了任何構造函數(partial class),那麼默認的無參數構造函數就不存在了,如果你想使用它(EF總是想使用它),你必須自己創建它。

+0

行動,幾乎在同一時間發佈。你也應該在這裏提到這個語言,因爲我確實相信創建的構造函數可能會因語言而異。 – 2011-05-19 22:26:24

相關問題