2

了解我的代码优先实体是否来自直接代码(新 DataObject())的最佳方法是什么

或从上下文 (Context.DataObjects.First())

因为我没有阻止我的上下文使用动态代理,所以我可以这样做:

    protected DataObject()
    {
        if (this.GetType().Namespace != "System.Data.Entity.DynamicProxies")
        {
            this.Id = IdGenerator.NextId<DataObject>();
        }
    }

但这看起来是一个糟糕的解决方案,因为 GetType() 很昂贵。

谢谢

4

1 回答 1

1

如果要检查必须调用的实体的类型GetType。顺便提一句。直接在MSDN上有推荐的解决方案。要从 DbContext 获取 ObjectContext 实例,您可以使用:

ObjectContext objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
于 2012-04-26T13:23:49.950 回答