如何更新EF 4.0中的非标量实体属性?

时间:2010-04-27 13:09:03

标签: .net vb.net entity-framework serialization

起初我使用它作为扩展方法来更新我的分离实体......

Public Sub AttachUpdated(ByVal obj As ObjectContext, ByVal objectDetached As EntityObject)
    If objectDetached.EntityState = EntityState.Detached Then
        Dim original As Object = Nothing
        If obj.TryGetObjectByKey(objectDetached.EntityKey, original) Then
            obj.ApplyCurrentValues(objectDetached.EntityKey.EntitySetName, objectDetached)
        Else
            Throw New ObjectNotFoundException()
        End If
    End If
End Sub

在我必须更新非标量属性之前,一切都运行良好。如果我错了,请纠正我,但这是因为“ApplyCurrentValues”仅支持标量。为了解决这个问题,我只是保存了FK_ID字段而不是实体对象关系。现在我面临着多对多的关系,所以它并不那么简单。我想做这样的事情......

Dim Resource = RelatedResource.GetByID(item.Value)
Condition.RelatedResources.Add(Resource)

但是当我调用SaveChanges时,添加的资源不会被保存。我开始玩自我跟踪实体(不确定它们是否有助于解决我的问题)但似乎它们无法序列化到ViewState,这对我来说是必需的。

我想一个解决方案就是将xRef表添加为一个实体并自己添加fks但我宁愿它也按照我的预期工作。

我愿意接受有关如何保存多对多关系或序列化自我跟踪实体的任何建议(如果自我跟踪甚至可以解决我的问题)。谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您可以先阅读此答案EF programmaticlly insert many to many,然后再详细说明您的问题。