2010-05-12 55 views
0

我有結構簡單的數據庫:實體框架,ArgumentNullException

markimaster(id, name), modelemaster(id, marka_id), typymaster(id, model_id) 

我定義的表之間的關係和與此代碼獲取數據:

ObjectQuery<markimaster> markiQuery = context.markimaster.Include("modelemaster.typymaster"); 

bindingSourceMarki.DataSource = markiQuery;  

最後一行拋出ArgumentNullException與PARAMNAME:實體。 當我改變我的代碼如下:

ObjectQuery<markimaster> markiQuery = context.markimaster.Include("modelemaster"); 

bindingSourceMarki.DataSource = markiQuery; 

它的工作的(指沒有拋出異常),所以我想也許有行typymaster未在modelemaster coresponding行了,但是檢查數據庫顯示沒有。

由於我是新來的EntityFramework我不知道什麼是錯的,所以來到這裏尋找意見;)

[更新]

我跑我的數據庫中查詢:

選擇* from modelemaster where model_id not in(select model_id from typymaster)

返回2000行。所以有沒有類型的模型。

[更新]

這是我的.edmx文件的片段

EntitySet Name="markimaster" EntityType="MMT_Master.store.markimaster" store:Type="Tables" Schema="public" 
EntitySet Name="modelemaster" EntityType="MMT_Master.store.modelemaster" store:Type="Tables" Schema="public" 
EntitySet Name="typymaster" EntityType="MMT_Master.store.typymaster" store:Type="Tables" Schema="public" 

因此它似乎傳遞到包括在路徑中使用的名稱是正確

回答

0

當你改變第一個會發生什麼一段代碼

bindingSourceMarki.DataSource = markiQuery.Execute(MergeOption.AppendOnly); 

?據MSDN

爲對象綁定到Windows窗體控件,該控件的DataSource屬性設置爲EntityCollection 或者當Execute方法被稱爲對象的ObjectQuery上時,返回的ObjectResult。

+0

感謝您的回覆。這是一樣的,但我更新了新的信息。你認爲這可能是一個問題;) – 2010-05-12 08:06:02

0

該問題似乎與錯誤的EntitySet名稱相關聯。
請檢查您是否已通過包含正確路徑(可能是複數或區分大小寫問題)。

+0

我添加.edmx文件的片段的問題。好像名字是正確的 – 2010-05-12 09:58:38