【发布时间】:2017-01-24 13:17:53
【问题描述】:
我正在 ASP.NET Core 1.1 中构建 Web API。
我有许多不同的数据库(用于不同的系统),它们具有用于配置、用户和组等配置项的通用基本模式(总共大约 25 个表)。我试图通过从图中所示的基类继承来避免为模型的共享部分复制相当广泛的 EF 配置。
但是,这不起作用,因为实体框架 (EF) 要求将 DbContextOptions<DerivedRepository> 作为参数传递给构造函数,其中 DerivedRepository 必须与调用构造函数的存储库的类型匹配。然后必须通过调用:base(param) 将参数向下传递到基DbContext。
因此,当(例如)使用 DbContextOptions<InvestContext> 初始化 InvestContext 时,它会调用 base(DbContextOptions<InvestContext>) 并且 EF 会抛出错误,因为对 ConfigurationContext 构造函数的调用正在接收 DbContextOptions<InvestContext> 类型的参数而不是所需的类型DbContextOptions<ConfigurationContext>。由于 DbContext 上的 options 字段被定义为
private readonly DbContextOptions _options;
我找不到解决办法。
定义一次共享模型并多次使用它的最佳方式是什么?我想我可以创建一个辅助函数并从每个派生上下文中调用它,但它不像继承那样干净或透明。
【问题讨论】:
标签: entity-framework asp.net-core .net-core entity-framework-core