在实体框架中添加对象的问题,我猜这是我的数据库模型的问题

问题描述:

我的问题是,我试图添加一个子实体,但仍然遇到问题。在实体框架中添加对象的问题,我猜这是我的数据库模型的问题

这是我的情况:

我有一堆配置文件。 每个配置文件都附带一组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

您与CategoryPriorityAttributePriority之间的关系是1:0..1所以没有Add方法。电话:

_categoryPriority.AttributePriority = attributePriority; 

Btw。您的实体如何定义AttributePriority但您的代码使用AttributePriorities?它不应该编译。

+0

这是一个错字.. 感谢您的帮助! 虽然还有其他问题,请更新我的问题... – bek 2011-03-17 10:19:18

请确保您有!外键正确设置,然后重新生成您的模型

+0

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