Mar*_*tin 1 entity-framework poco entity-framework-4 objectcontext
我想知道是否有人可以帮助我?
我在理解为什么需要在我的POCO(非代理)实体上发出DetectChanges时遇到问题.
当然我有这一行来确保不返回代理.
context.ObjectStateManager.GetObjectStateEntry(order).State
Run Code Online (Sandbox Code Playgroud)
如果我需要检查一个对象的"状态"然后我需要发出一个checkchChanges但是为什么我需要检查一个对象的状态?
基本上我将我的POCO实体发送到一个方法,该方法将数据保存到新的ObjectContext(我在每个方法上创建并销毁ObjectContext)
因此,我在理解为什么需要使用ObjectContext跟踪或了解更改时遇到问题?
是因为如果不知道是否会被保存?
也许我很想知道,但似乎如果我使用现有的ObjectContext(我不是每次创建和销毁),确保ObjectContext知道将是有益的,否则不会?
因此,在1方法中,我通过创建新的datacontext来更新对象,将其保存到db并销毁ObjectContext.因此我不使用2种方法,1种方法发送更新或新记录,然后使用另一种方法进行保存.
我真的很感激为什么需要它的快速解释?
提前致谢
你的问题有点令人困惑.您正在编写有关Entity Framework但使用与LinqToSql相关的DataContext.
您使用ObjectContext的方式有所不同.从数据库加载POCO实体时ObjectContext将其实例保存在内部标识映射中.默认情况下,POCO不使用任何类型的更改跟踪.当您将该POCO实体保存到同一个ObjectContext 实例时,它会在内部调用DetectChanges以将当前实体状态与存储状态进行比较.此比较定义了哪些列必须更新.对DetectChanges的内部调用是默认行为,可以关闭,因此您必须手动调用此方法.
在您的方案中,您不使用相同的ObjectContext 实例.在这种情况下,您首先必须将POCO实体附加到ObjectContext.MSDN严格地说,当附加实体时,它被标记为未更改.因此,您必须说实体已更改的ObjectContext.您可以为整个实体执行此操作,或者您可以确切地定义哪些属性已更改但您必须手动执行=您必须在某处存储该信息(自我跟踪实体可以帮助您,但它们有更好的缺点).
| 归档时间: |
|
| 查看次数: |
2862 次 |
| 最近记录: |