0

我无法将我的一个实体转换为 IEntityWithRelationsships。我使用了很多从实体获取上下文的方法,到目前为止它运行良好。我认为实体只需要在模型中定义一个或多个关系,就是这样。

这是我的代码的一小部分:

public ActionResult Update(StavkaDokumentaVM stavka)
{
if (ModelState.IsValid)
{
    StavkaDokumenta st = AutoMapper.Mapper.Map<StavkaDokumenta>(stavka);

    db.StavkeDokumenta.Attach(st);
    db.ObjectStateManager.ChangeObjectState(st, EntityState.Modified);                
    db.SaveChanges();

    IEntityWithRelationships test = st as IEntityWithRelationships; // I get NULL here

    st = db.StavkeDokumenta.Include("RelationEnd1").Include("RelationEnd2")
        .Where(sd => sd.IdStavkaDokumenta == st.IdStavkaDokumenta).Single();

    test = st as IEntityWithRelationships; // Also get NULL
}
}

有问题的实体定义了大约 10 个关系,所以应该没问题。

这里发生了什么?我真的很困惑。

更新:

这就是我刚刚所做的:

db.LoadProperty(st, "DokumentStavke");
IEntityWithRelationships test = st.DokumentStavke as IEntityWithRelationships; // I get NON NULL value;
test = st as IEntityWithRelationships; // I still get NULL.

这是事情应该是这样的吗?

4

1 回答 1

1

POCO 实体不实施IEntityWithRelationships。你正在做的是一个依赖于动态代理的黑客攻击。EF 生成的动态代理实现了该接口,但要正确创建动态代理,您必须通过所有先决条件

于 2012-09-11T08:17:09.647 回答