Entity framework 4 T是否创建对象<;T>;在实体框架中,是否还跟踪创建代理后的更改?
我认为调用ObjectContext.CreateObject()为T创建了一个代理包装器,然后开始使用代理包装器支持的更改通知跟踪更改。如果是这样,那么为什么我不能将其与上下文分离 我的问题是:Entity framework 4 T是否创建对象<;T>;在实体框架中,是否还跟踪创建代理后的更改?,entity-framework-4,Entity Framework 4,我认为调用ObjectContext.CreateObject()为T创建了一个代理包装器,然后开始使用代理包装器支持的更改通知跟踪更改。如果是这样,那么为什么我不能将其与上下文分离 我的问题是: public void FailedTest() { POCOtype fail = context.CreateObject<POCOtype>(); context.Detach(fail); // Throws InvalidOperationException
public void FailedTest() {
POCOtype fail = context.CreateObject<POCOtype>();
context.Detach(fail); // Throws InvalidOperationException
// "The object cannot be detached because it is not attached to the ObjectStateManager."
}
public void WorkingTest() {
POCOtype happy = context.CreateObject<POCOtype>();
context.AttachTo("POCOtypes", happy);
context.Detach(happy);
// Everything is good.
}
public void VeryOdd_WorkingTest() {
POCOtype odd = context.CreateObject<POCOtype>();
try {
context.Detach(odd); // Throws InvalidOperationException
// "The object cannot be detached because it is not attached to the ObjectStateManager."
} catch(Exception e) { }
context.SaveChanges(); // The object is inserted into the DB.
}
public void失败测试(){
POCOtype fail=context.CreateObject();
context.Detach(fail);//引发InvalidOperationException
//“无法分离该对象,因为它未附加到ObjectStateManager。”
}
公共无效工作测试(){
POCOtype happy=context.CreateObject();
上下文。AttachTo(“POCOtypes”,happy);
上下文。分离(快乐);
//一切都很好。
}
公共无效VeryOdd_工作测试(){
POCOtype odd=context.CreateObject();
试一试{
context.Detach(奇数);//引发InvalidOperationException
//“无法分离该对象,因为它未附加到ObjectStateManager。”
}捕获(例外e){}
context.SaveChanges();//对象被插入数据库。
}
CreateObject
不创建附加实体。您必须手动将实体附加或添加到上下文中。您甚至可以将其附加到其他上下文实例。上次测试不应插入实体。我只是自己测试,它没有插入任何东西。使用上下文的新实例进行测试,或者检查context.ObjectStateManager.GetObjectStateEntries(EntityState.Added)
在调用CreateObject
之前是否未返回任何条目。我的错。。。它是通过与附加实体的关联绑定的,所以它是附加的——只是直到代码的后面。