2011-03-17 32 views
1

我的問題是,我試圖添加一個子實體,但仍然遇到問題。在實體框架中添加對象的問題,我猜這是我的數據庫模型的問題

這是我的情況:

我有一堆配置文件。 每個配置文件都附帶一組CategoryPriorities。 每個CategoryPriorities都有一個AttributePriority連接到它。

enter image description here

當我更新我在Visual Studio中的模型我得到如下: enter image description here

我可以沒有任何麻煩得到以下工作:

CategoryPriority _categoryPriority = new CategoryPriority(); 
Profile _profile = DB.GetProfile(ProfileID); 
_profile.CategoryPriorities.Add(_categoryPriority); 
DB.savechanges() 

但不知何故以下將不起作用:

AttributePriority _attributePriority = new AttributePriority();  
CategoryPriority _categoryPriority = new CategoryPriority(); 
_categoryPriority.AttributePriorities.Add(_attributePriority); 
// Error! There is no option of "Add" or any other operation for the matter. 

Profile _profile = DB.GetProfile(ProfileID); 
_profile.CategoryPriorities.Add(_categoryPriority); 
DB.savechanges() 

我猜這是由於如何建立EF模型。 理想情況下,我想在CategoryPriority和AttributePriority表之間建立一對一的關係。

我將添加模型的圖像。

任何想法? 任何幫助非常感謝!

編輯: 我已添加圖片到我的文章。

有趣的是,如果我寫:

Profile _p = new Profile(); 

沒有的_p.Add選擇有兩種。顯然我失去了一些東西..

編輯2: 好了,我得到了它的工作,幾乎... 我知道,不是最美觀的代碼,我工作的..

Profile _profile = this.GetProfile(this.GetUserID(arrangeattributesviewmodel.ProfileID)); 

int iter = 0; 
foreach (AttributeListForCategory _category in arrangeattributesviewmodel.AllAttributesForCheckBoxList.CategoryAttributeList) 
{ 
iter++; 
CategoryPriority _categoryPriority = new CategoryPriority(); 

_categoryPriority.ProfileID = arrangeattributesviewmodel.ProfileID; 
_categoryPriority.CategoryID = _category.CategoryID; 
_categoryPriority.CategoryName = _category.CategoryName; 
_categoryPriority.CategoryID = _category.CategoryID; 
_categoryPriority.CategoryPriorityNR = iter; 


AttributePriority _attributePriority = new AttributePriority(); 
_attributePriority.AttributePriorityString = _category.CompilePriorityString(); 
_categoryPriority.AttributePriority = _attributePriority; 
_profile.CategoryPriorities.Add(_categoryPriority); 

db.SaveChanges(); // It fails here with the message below.. 
} 

{「從屬ReferentialConstraint中的屬性映射到商店生成的列。專欄:?CategoryPriorityID'「}

任何想法

編輯3: 解決它

我在我的CategoryPriority來實例化一個AttributePriority ...

+0

'CategoryPriority'實體中的'AttributePriorities'集合嗎?你應該展示你的模型,並且創建你的表的腳本。 – 2011-03-17 08:52:00

+0

我這麼認爲,對EF來說很新鮮。我會盡快爲我的數據庫模型添加圖像(需要另外2個信譽分數,我認爲)。 – bek 2011-03-17 09:13:13

回答

1

您與CategoryPriorityAttributePriority之間的關係是1:0..1所以沒有Add方法。電話:

_categoryPriority.AttributePriority = attributePriority; 

Btw。您的實體如何定義AttributePriority但您的代碼使用AttributePriorities?它不應該編譯。

+0

這是一個錯字.. 感謝您的幫助! 雖然還有其他問題,請更新我的問題... – bek 2011-03-17 10:19:18

1

請確保您有!外鍵正確設置,然後重新生成您的模型

+0

這就是我想要弄清的。 – bek 2011-03-17 09:13:32