Почему код Entity Framework сначала меняет мои имена типов? - PullRequest
3 голосов
/ 01 сентября 2011

Я сгенерировал кучу классов, используя EF 4.1 Power Toys для обратного инжиниринга моей базы данных. Мои классы и карты выглядят хорошо и работают хорошо, но когда я проверяю имя возвращаемого типа, кажется, что EF добавил GUID к имени типа. Итак, метод с этим для тела:

var context = new DbContext();
var myVehicle = context.Vehicles.First();
return myVehicle.GetType().Name;

... вернет что-то вроде:

"Vehicle_F31E8AC6EB21A3220F761E7C2FFEB3B433CEFC7CF567E9A0CF53E8F4B598C2B9"

Почему это так и есть ли способ его отключить?

1 Ответ

5 голосов
/ 01 сентября 2011

Это называется динамический прокси. Когда вы впервые запрашиваете тип из платформы сущностей, он динамически создает класс, производный от вашего типа сущности, и возвращает его вместо этого. Имя, которое вы видите, является именем этого производного класса.

Причиной, по которой структура сущностей делает это, является поддержка некоторых расширенных функций, таких как отложенная загрузка или динамическое отслеживание изменений. Его можно отключить, позвонив по номеру:

context.Configuration.ProxyCreationEnabled = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...