实体进入意想不到的GetType()结果 [英] unexpected GetType() result for entity entry

查看:176
本文介绍了实体进入意想不到的GetType()结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

虽然我通过ObjectStateEntries迭代我的预期[T]变量名称将是MY_ENTITY

While I iterating through ObjectStateEntries I expected [t] variable name will be MY_ENTITY

      foreach (ObjectStateEntry entry in
                context.ObjectStateManager.GetObjectStateEntries(
                EntityState.Deleted))
            {
                Type t = entry.Entity.GetType();
                ...
            }



但真正的我。

but real I have

         System.Data.Entity.DynamicProxies.MY_ENTITY_vgfg7s7wyd7c7vgvgv.....

我怎么能确定我可以投目前进入MY_ENTITY类型?

How can I determine can I cast current entry to MY_ENTITY type?

推荐答案

您可以通过

ObjectContext.GetObjectType(entity.GetType())

这是的ObjectContext 静态方法C $ C> ,所以你可以很容易地使用在的DbContext 环境。

This is a static method of ObjectContext, so you can readily use in in a DbContext environment.

如果对由于某种原因,你需要的实际实体作为它的原始类型,你可以使用该模式。

If for some reason you need the actual entity as its original type you can use the pattern

var entity = entry.Entity as MyEntity;
if (entity != null)
{
    ...
}

这是略高于更有效

if (entry.Entity is MyEntity)
{
    var entity = (MyEntity)entry.Entity;
    ...
}



因为后者片段投射对象的两倍。

because the latter snippet casts the object twice.

这篇关于实体进入意想不到的GetType()结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆