意外GetType()实体输入结果 [英] unexpected GetType() result for entity entry

查看:99
本文介绍了意外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();
    ...
}

但实际我有

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 ,所以你可以在 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天全站免登陆