在DbContext中创建模型后添加实体类型

时间:2018-05-10 14:02:32

标签: c# entity-framework dependency-injection entity-framework-core

我正在使用EF Core 2而我正在尝试动态地向模型添加实体。 场景是:

  1. 用户在网络应用中创建具有自定义属性的实体

  2. 我在运行时创建了一个映射此实体的类(请参阅How to emit a Type in .NET Core

  3. 我在db上下文的OnModelCreating方法中将创建的类添加到模型中(参见https://romiller.com/2012/03/26/dynamically-building-a-model-with-code-first/

  4. 一切正常,除非我想在我创建新实体的同一请求(API调用)中向db写入新创建的类的新实例。

    这是因为DbContext的范围限定为请求(非瞬态),因此在我有机会创建新实体之前DbContext调用OnModelCreating方法。

    这是我得到的错误:

    The entity type 'People' was not found. 
    Ensure that the entity type has been added to the model.
    

    有关如何实现这一目标的任何建议?我不认为可以根据需要拨打OnModelCreating,我无法找到访问上下文ModelBuilder的方法来调用它Entity方法。

1 个答案:

答案 0 :(得分:0)

您还需要一个新的DbContext子类型,因为OnModelCreating每个AppDomain每个DbContext类型只运行一次。