如何在不引用EF的情况下识别EF POCO代理?

时间:2011-07-15 09:50:54

标签: c# .net entity-framework poco

我需要发现EF POCO代理; MSDN提供了一些基于ObjectContext.GetObjectType(type.GetType())

的提示

但是,如果没有EF参考,我真的很想这样做。例如,使用NHibernate,我可以使用名称(作为字符串)"NHibernate.Proxy.INHibernateProxy"来检查对象是否实现了标记接口。

EF POCO代理中是否有类似内容?例如,我可以依赖将它们放在命名空间System.Data.Entity.DynamicProxies.中,还是那么脆弱?

看一下反射器内部,它只是检查组件与内部跟踪的组件,这对我来说是个问题。

2 个答案:

答案 0 :(得分:3)

检查引擎盖,作为实现细节确实如此,在当前的EF中,类型将始终存在于“System.Data.Entity.DynamicProxies”中。这可能不是一个强大的测试,但应该不经常更改。不过,我会尝试向微软澄清这一点。

答案 1 :(得分:1)

我知道名为此模式的POCO代理类型UserDefinedName_123AF...

那么这种方法怎么样?

const string pattern = @"_[\dA-F]{64}\b";
Regex regex = new Regex(pattern);
bool result = regex.IsMatch(tragetObject.GetType().Name);