Налагодження API відстеження DBContext

Хороший день,

Я використовую структуру Entity Framework для відображення деяких існуючих бізнес-об'єктів до нашої бази даних. Ці об'єкти спочатку використовували метод отримання доступу до даних, але ми хотіли спробувати Entity Framework зараз, коли він використовує Code-First. Я сподівався, що це буде досить просто, але тепер я маю певні сумніви.

Я намагаюся використати лише атрибути, щоб виконати це, щоб у мене не було деяких з них, десь там, і все-таки більше там ...

Коли я запитую для сутностей, я отримую System.Data.Entity.DynamicProxies.MyClass_23A498C7987EFFF2345908623DC45345 і аналогічні об'єкти назад. Ці об'єкти мають дані з відповідної записи там, а також пов'язаних об'єктів (хоча це і DynamicProxies).

Що тут відбувається? Щось не так з моїм відображенням? Чому це не повертає MyBusinessObject.MyClass?

0

1 Відповіді

Це не має нічого спільного з картографуванням. Типи, які ви бачите, називаються динамічними проксі. EF у середовищі виконання виводить клас з кожного типу, який ви картуєте, і використовуєте його замість вашого типу. Ці класи мають деяку додаткову внутрішню логіку всередині overriden властивості setters та getter. Логіка потрібна для лінького завантаження та динамічного відстеження змін у доданих об'єктів.

Ця поведінка може бути вимкнена в контексті контексту:

context.Configuration.ProxyCreationEnabled = false;

Після того, як ви зробите це, ваша навігаційна властивість не буде завантажуватися автоматично, і вам доведеться скористатися завантаженням ( Include у запитах) або явним завантаженням.

3
додано
MyClass є батьком цього динамічного класу. Це проблема для WPF?
додано Автор Ladislav Mrnka, джерело
ОК, так це очікувана поведінка, якщо її не вимкнули. Наступне запитання: як отримати щось подібне до WPF, щоб розпізнати тип об'єкта? У мене є DataTemplates для MyClass, а не для динамічного проксі. І я хочу використовувати ліньке навантаження ... Я починаю думати, що краще б збити наші оригінальні бізнес-класи і відновити їх через майстер EF і змінювати їх звідти ..
додано Автор CodeWarrior, джерело
Двомісний !!! !!! Арарінто не. Я міг би призвести до того, що раніше я намагався це, і DataTemplate не застосовувався. Гаразд, добре, а потім ігноруйте. Іноді я думаю, що ці комп'ютери мають це для мене.
додано Автор CodeWarrior, джерело