是否可以命名一个属性' StateID'在EF4.0中的实体?

时间:2015-05-19 10:00:25

标签: c# entity-framework

我正在尝试使用EF4.0更新数据库中的实体,所以我这样做:

_dbctx.AddObject("MyEntities", EntityWithUpdates);
_dbctx.ObjectStateManager.ChangeObjectState(EntityWithUpdates, EntityState.Modified);
_dbctx.SaveChanges();

MyEntities有一个名为StateID的属性。使用debug我可以在将StateID属性添加到上下文时在217的StateID属性中看到正确的值,但是当ObjectStateManager.ChangeObjectState完成时,该值以某种方式更改为0。

有没有人见过这个?

这是实体遇到问题的唯一属性。应该避免使用StateID属性名称还是有解决方法?

我的实体看起来像这样:

public class MyEntity
{
    public int ID { get; set; }
    public int StateID { get; set; }
}

如果我先从数据库中获取实体。然后应用当前值,一切都非常有效:

MyEntity entity = _dbctx.MyEntities.Where(i => i.ID == id).FirstOrDefault();
_dbctx.ApplyCurrentValues("MyEntities", EntityWithUpdates);
_dbctx.SaveChanges();

这似乎是一个对象图问题,但我仍然希望能够附加实体并保存以避免数据库调用。

我查看了应用程序中的其他几个实体,并认为eran otzap是正确的。正在保存整个对象图,包括State。因为没有加载状态EF即使它有一个有效的ID也想创建它。所以似乎将更改应用于此实体的唯一安全方法是首先从db获取它,应用,然后保存更改。长号。

对于任何可能看到这个的人。 eran otzap建议为StateID应用一个值。他说这可能"可能"工作。在我的情况下,它没有。在EF识别StateID之前,我必须先获取实体。

0 个答案:

没有答案