2010-12-16 193 views
1

我幾個星期以來一直在使用EFCodeFirst(EFCTP 5),沒有任何問題。
但是,現在我收到一個異常時,將一個實體添加到集合。System.MissingMethodException:在將實體添加到集合時爲此對象定義的沒有無參數構造函數

我有一個User

public class User 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
} 

DbContext

public class Foo : DbContext 
{ 
    public DbSet<User> Users { get; set; } 
} 

現在我只想補充userDbSet

Foo f = new Foo(); 
User us = new User() 
{ 
    FirstName = "FooName" 
}; 

f.User.Add(us); //The exception is thrown on this line 

異常消息爲

「system.missingMethodException而:此對象定義無參數的構造函數」

+0

你確定它不是拋出錯誤的'new User()'行嗎?什麼是內在的例外?嘗試在User之後移除'()',只需使用對象初始值設定項即可。也不應該是'f.Users.Add'(不是'f.User。添加') – RPM1984 2010-12-16 10:28:19

+0

是這不是'新用戶()'線:(內部異常爲null。Removing()does not幫助我。其他想法?這真的很奇怪的原因使用一段時間沒有問題 – dknaack 2010-12-16 13:14:52

+0

堆棧跟蹤,請? – 2010-12-16 14:01:50

回答

0

這可能還是因爲我的情況是在不同的可能不適合你我正在使用EF4的POCO生成模板。

我有一個實體,有readonly屬性,我不想被創建沒有設置這些屬性值,所以我創建了一個參數化的構造函數。我需要設置的一個屬性是從新實體到另一個傳入的多1關係。由於代理修正代碼,無論何時在構造函數中設置該實體屬性,我收到一個InvalidOperationException,聲明沒有無我的實體的無參數構造函數。

解決方案:創建了一個protected無參構造函數,它具有空體。我也需要爲它的子類做這件事。

1

這是EF中的設計缺陷和反射問題的組合。

常會報告:

MissingMethodException:此對象定義無參數的構造函數。

什麼意思是「我調用構造函數並拋出異常」。例如,如果配置文件中的連接字符串不正確 - 通常無法構造EF上下文對象;拋出上面的錯誤。所有關於格式錯誤的連接字符串的SQL異常似乎都被EF或反射代碼所佔用。

我懷疑這裏發生了類似的事情。

在Visual Studio中啓用捕捉第一次機會異常。查看調試菜單下的異常,選中「拋出」「公共語言運行時異常」框。

這應該揭示什麼是構造函數失敗。

相關問題