将EF4中的关联视为:
儿童1 ---- 0..1父母
因此,在Parent for the Child中有一个不可为空的外键。
我创建了一个新的Parent并分配了一个现有的子项。不幸的是,这是一个有点奇怪的家庭,因为有300个父母,许多人共用同一个孩子。
当我尝试保存300条父记录时,遇到UpdateException:
'MyEntities.Parents'中的实体参与'儿童' 关系。找到了0个相关的“孩子”。 1'孩子'是预期的。
以下是一些代码来说明:
// scope autosaves
using (new UnitOfWorkScope(true))
{
var allParents= (from DataRow dataRow in this.dataTable.Rows
where dataRow != null
select CreateParent(dataRow)
into parents
where parents != null
select parents).ToList();
var parentFacade = new ParentFacade();
foreach (var newParent in allParents)
{
parentFacade.Add(newParent);
}
}
private static Parent CreateParent(DataRow dataRow)
{
var parent = new Parent
{
SomeProperty = 'Moo',
Child = GetChild(someValue)
}
return Parent;
}
private static Child GetChild(string someValue)
{
return new ChildFacade().GetChild(someValue);
}
// Facade
public Child GetChild(string someValue)
{
return (from c in this.ObjectContext.Children
where c.SomeProperty == someValue
select c).FirstOrDefault();
}
我无法弄清楚如何绕过它。我想保存一个新的父级,并引用现有的子级。
谢谢,
理查德
答案 0 :(得分:0)
许多人分享同一个孩子。
您的关系不能是1 - 0..1,而是父母一方可以有很多孩子的一对多。您当前的关系表明,Child
具有可选Parent
,而Parent
必须具有Child
。