我有一个新的父实体,它有Lanugages
作为导航属性。在父实体属于domaincontext之前,我Add
现有的语言,它将它的实体状态设置为Added
。语言实体已存在于数据库中,但由于我必须在有上下文之前将其添加到父实体,因此我没有机会Attach
语言实体而不是添加它。
如何在对domaincontext调用EntityState
之前更改语言条目的SaveChanges()
,或以其他方式解决此问题?
答案 0 :(得分:0)
您可以通过上下文ObjectStateManager更改EntityState,如下所示:
this.ObjectContext.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Added);
其中EntityState枚举为here ...
答案 1 :(得分:0)
从你在不同答案中的评论中,你提到语言实体本质上是常量。这是否意味着主键值不会改变并为您所知?如果是这样,这可能会有效:
Public Class MyParent
Public Property Language as Language '<--- navigation property
Public Property LanguageID as Integer '<--- primary key foreign key
End Class
Dim context as New MyContext
Dim p as New MyParent
p.LanguageID = 42 '<--- you language "constant" primary key value
context.MyParents.Add(p)
context.SubmitChanges(...)