C# 为DBContext创建自定义ObjectContext,以在CreateObject()中实现自定义逻辑
是否可以使用简单的新DbContext并实现自定义ObjectContext来重写ObjectContext.CreateObject方法C# 为DBContext创建自定义ObjectContext,以在CreateObject()中实现自定义逻辑,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,是否可以使用简单的新DbContext并实现自定义ObjectContext来重写ObjectContext.CreateObject方法 我需要这样才能在设置属性之前初始化实体。Objectcontext.CreateObject不是EF内部使用的,因此为此目的重写它是无用的。为什么不在对象的构造函数中初始化对象呢?我使用的实体POCO也用于另一个自实现的ORM。我们即将实现EF作为一种新的数据访问方式。但这将是一个长期运行的过程。在构造函数中,此实体的数据状态设置为created。从DB加载
我需要这样才能在设置属性之前初始化实体。Objectcontext.CreateObject不是EF内部使用的,因此为此目的重写它是无用的。为什么不在对象的构造函数中初始化对象呢?我使用的实体POCO也用于另一个自实现的ORM。我们即将实现EF作为一种新的数据访问方式。但这将是一个长期运行的过程。在构造函数中,此实体的数据状态设置为created。从DB加载的所有实体都将获得其加载的数据状态。现在我想在具体化过程中将数据状态设置为Loading,以禁用任何验证和其他逻辑。是否有其他选项来检测此实体当前是否已物化?或者是否有一个选项可以通过EF设置一个不从DB加载的属性?您只能挂接到ObjectContext.ObjectMaterialized事件,该事件在构建对象后运行。DbContext是ObjectContext的包装器。我知道这个事件。但它是在设置了所有属性后启动的。太晚了。是否有将属性映射为从计算字段只读的选项?所以我可以通过生成的sql设置我的DataState属性?例如:Me.propertyfunction t.DataState.HasColumnName1作为DataState.hasDatabaseGeneratedOption.DatabaseGeneratedOption.computed,但它也应该是数据库中的计算列。我认为你不想那样做。