C# 我的实体赢了';不要向有关系的人施压

C# 我的实体赢了';不要向有关系的人施压,c#,asp.net-mvc-3,linq,entity-framework,C#,Asp.net Mvc 3,Linq,Entity Framework,我很难将我的一个实体与Relationships关联。我使用了很多从实体获取上下文的方法,到目前为止,它工作得很好。我认为实体只需要在模型中定义一个或多个关系即可 下面是我的一点代码: public ActionResult Update(StavkaDokumentaVM stavka) { if (ModelState.IsValid) { StavkaDokumenta st = AutoMapper.Mapper.Map<StavkaDokumenta>(stavka

我很难将我的一个实体与Relationships关联。我使用了很多从实体获取上下文的方法,到目前为止,它工作得很好。我认为实体只需要在模型中定义一个或多个关系即可

下面是我的一点代码:

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
}
}

事情应该是这样的吗?

POCO实体没有实现具有关系的
ientitywhithrelationships
。您所做的是一个依赖于动态代理的黑客。EF生成的动态代理实现了该接口,但需要正确创建动态代理。

您使用的是POCOs吗?默认情况下,它们不会继承/实现任何内容。不,'StavkaDokumenta'是来自模型的实体,'StavkaDokumentaVM'是我基于后一个模型创建的视图模型。是的,但该模型是如何创建的?使用EDM Designer。我确实用很少的附加功能扩展了这个实体,但我认为这不会改变任何东西。我认为AutoMapper为我创建的“StavkaDokumenta”将是常规实体,但很明显,我错了。无论如何,我无法在ViewModel类中创建导航属性,因为将其序列化为JSON时会出现循环引用错误。所以,我想我必须从数据库中“刷新”实体,才能得到我需要的东西。谢谢
db.LoadProperty(st, "DokumentStavke");
IEntityWithRelationships test = st.DokumentStavke as IEntityWithRelationships; // I get NON NULL value;
test = st as IEntityWithRelationships; // I still get NULL.