我可以防止同一个对象被添加两次,但我仍然需要引用待处理的id来添加其他相关对象。
在下文中,SomeData中的某些区分项可能需要两次添加同一个人。我可以跟踪,但我仍然需要向待处理人员添加不同的项目信息。我该如何管理?
foreach(item i in SomeData)
{
var x = dc.People.Where(p.someprop==a...);
if (x=null)
{
Person p = new P(..);
dc.People.InsertOnSubmit(p);
}
...
...
}
dc.Submitchanges()
答案 0 :(得分:0)
基本上,您需要检查实体是否已附加到上下文。以下是如何使其工作的示例:
public static void SafeAttachTo<T>(this ObjectContext context, string entitySetName, ref T entity) where T : class {
ObjectStateEntry entry;
bool isDetached;
if (context.ObjectStateManager.TryGetObjectStateEntry(context.CreateEntityKey(entitySetName, entity), out entry)) {
isDetached = entry.State == EntityState.Detached;
entity = (T) entry.Entity;
}
else
isDetached = true;
if (isDetached)
context.AttachTo(entitySetName, entity);
}