知道我的代码第一个实体是否来自直接代码(new DataObject())
的最佳方法是什么?或来自上下文(Context.DataObjects.First())
由于我没有阻止我的上下文使用动态代理,我可以这样做:
protected DataObject()
{
if (this.GetType().Namespace != "System.Data.Entity.DynamicProxies")
{
this.Id = IdGenerator.NextId<DataObject>();
}
}
但这看起来很糟糕,因为GetType()很贵。
谢谢
答案 0 :(得分:1)
如果要检查实体的类型,则必须调用GetType
。顺便说一句。直接在MSDN上推荐解决方案。要从DbContext获取ObjectContext实例,您可以使用:
ObjectContext objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;