检查实体是否是EF 4.0中的新实体

时间:2011-03-12 16:06:49

标签: .net entity-framework-4

我需要检查实体是否是新的。如果它是一个int / identity主键,我可以检查该键的属性是否具有默认值...但是在Guid的情况下,我不能这样做。有什么我可以用ObjectContext或ObjectStateManager来检查和确定有问题的实体是新的还是修改过的?

3 个答案:

答案 0 :(得分:2)

ObjectStateManager.GetObjectStateEntry

using (MyContext context = new MyContext())
{
    ObjectStateManager objectStateManager = context.ObjectStateManager;
    EntityState state = objectStateManager.GetObjectStateEntry(obj).State;
}

答案 1 :(得分:0)

如果是Guid,你可以这样做

if(foo.GuidProperty == default(Guid))
{

}

答案 2 :(得分:0)

如果它是可以为空的Guid,您可以检查它是否有值:

if (entity.MyGuid.HasValue)
{
  // hooray!
}

如果它不可为空,请检查默认值或空GUID:

if (entity.MyGuid != default(Guid))
{
  // hooray!
}

if (entity.MyGuid != Guid.Empty)
{
  // hooray!
}