EFPocoAdapter - PopulatePocoEntity имеет нулевое значение PocoEntity - PullRequest
1 голос
/ 14 июля 2009

Я пробую EF с EFPocoAdapter в первый раз. У меня есть относительно простой сценарий TPH с одной таблицей и двумя типами, каждый из которых наследуется от абстрактного базового класса.

Моя модель проверяется через EdmGen, и мои файлы PocoAdapter.cs и xxxEntities.cs также генерируют нормально. (ну, на самом деле, есть некоторые пробемы пространства имен, которые я сейчас настраиваю вручную, пока мы не выясним, куда идти дальше.)

Когда я запускаю простой тест для извлечения данных:

        using (CINFulfillmentEntities context = new CINFulfillmentEntities())
        {
            // use context
            var alerts = from p in context.Notifications.OfType<Alert>()
                         select p;

            foreach (var alert in alerts)
            {
                Assert.IsNotNull(alert);

            }
        }

Я получаю сообщение об ошибке в классе PocoAdapter, утверждая, что PocoEntity имеет значение null, это следующий метод внутри адаптера моего базового класса:

    public override void PopulatePocoEntity(bool enableProxies)
    {
        base.PopulatePocoEntity(enableProxies);
        PocoEntity.Owner = _Owner.CreatePocoStructure();
        if (!(PocoEntity is IEntityProxy))
        {
        }

Есть идеи у кого-нибудь?

    }

Итак, после небольшой отладки, я думаю, что это связано с прокси. Внутри PocoAdapterBase у нас есть следующий метод: защищенный PocoAdapterBase (TPocoClass pocoObject) { _context = ThreadLocalContext.Current; bool allowProxies = false; if (_context! = null) { allowProxies = _context.EnableChangeTrackingUsingProxies; } _pocoEntity = pocoObject ?? (TPocoClass) (allowProxies? CreatePocoEntityProxy (): CreatePocoEntity ()); В этом(); InitCollections (allowProxies); RegisterAdapterInContext (); }

Строка, которая устанавливает _pocoEntity, вызывает CreatePocoEntityProxy, который возвращает ноль.

Больше информации, как я нахожу ...

...