Entity framework 4 T是否创建对象<;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

我认为调用ObjectContext.CreateObject()为T创建了一个代理包装器,然后开始使用代理包装器支持的更改通知跟踪更改。如果是这样,那么为什么我不能将其与上下文分离

我的问题是:

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
之前是否未返回任何条目。我的错。。。它是通过与附加实体的关联绑定的,所以它是附加的——只是直到代码的后面。