在实体框架中添加对象的问题,我猜这是我的数据库模型的问题
我的问题是,我试图添加一个子实体,但仍然遇到问题。在实体框架中添加对象的问题,我猜这是我的数据库模型的问题
这是我的情况:
我有一堆配置文件。 每个配置文件都附带一组CategoryPriorities。 每个CategoryPriorities都有一个AttributePriority连接到它。
当我更新我在Visual Studio中的模型我得到如下:
我可以没有任何麻烦得到以下工作:
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 ...
您与CategoryPriority
和AttributePriority
之间的关系是1:0..1所以没有Add
方法。电话:
_categoryPriority.AttributePriority = attributePriority;
Btw。您的实体如何定义AttributePriority
但您的代码使用AttributePriorities
?它不应该编译。
这是一个错字.. 感谢您的帮助! 虽然还有其他问题,请更新我的问题... – bek 2011-03-17 10:19:18
'CategoryPriority'实体中的'AttributePriorities'集合吗?你应该展示你的模型,并且创建你的表的脚本。 – 2011-03-17 08:52:00
我这么认为,对EF来说很新鲜。我会尽快为我的数据库模型添加图像(需要另外2个信誉分数,我认为)。 – bek 2011-03-17 09:13:13