Как я могу распознать прокси EF POCO без ссылки на EF? - PullRequest
6 голосов
/ 15 июля 2011

Мне нужно определить прокси EF POCO; MSDN дает некоторые подсказки, основанные на ObjectContext.GetObjectType(type.GetType())

Однако я бы очень хотел сделать это без ссылки на EF. Например, с помощью NHibernate я могу проверить, реализует ли объект интерфейс маркера, используя имя (в виде строки) "NHibernate.Proxy.INHibernateProxy".

Есть ли что-нибудь подобное в прокси EF POCO? Например, могу ли я полагаться на то, что они находятся в пространстве имен System.Data.Entity.DynamicProxies., или это хрупко?

Взглянув внутрь отражателя, он просто проверяет сборку на наличие узлов с внутренним отслеживанием, что для меня проблематично.

Ответы [ 2 ]

3 голосов
/ 15 июля 2011

Проверка скрытно, как подробность реализации , действительно, в текущем EF тип всегда будет жить в "System.Data.Entity.DynamicProxies".Вероятно, это не надежный тест, но он должен меняться нечасто.Я попытаюсь разъяснить это с Microsoft, хотя.

1 голос
/ 15 июля 2011

Я знаю тип прокси POCO, названный этим шаблоном, UserDefinedName_123AF....

Так как насчет этого подхода?

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