1

我第一次尝试使用 EFPocoAdapter 进行 EF。我有一个相对简单的 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);
  }
}

I get an error in the PocoAdapter class, claiming that PocoEntity is null is the following method inside my base class's adapter:

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

任何人的任何想法?

所以,经过一点调试,我认为这与代理有关。在 PocoAdapterBase 内部,我们有以下方法:

protected PocoAdapterBase(TPocoClass pocoObject)
{
  _context = ThreadLocalContext.Current;
  bool allowProxies = false;
  if (_context != null)
  {
    allowProxies = _context.EnableChangeTrackingUsingProxies;
  }

  _pocoEntity = pocoObject ?? (TPocoClass)(allowProxies ? CreatePocoEntityProxy() : CreatePocoEntity());
   Init();
   InitCollections(allowProxies);
   RegisterAdapterInContext();
}

设置 _pocoEntity 的行调用 CreatePocoEntityProxy,它返回 null。

我找到的更多信息。

4

0 回答 0