【发布时间】:2018-05-20 09:35:27
【问题描述】:
我正在使用实体框架核心 (2.0.1) 开发一个 .NET Core 项目。
我有一个插件架构,需要根据附加的插件加载不同的模型,因此在使用 DbContextOptionsBuilder.UseModel 方法将 dbcontext 添加到 DI 容器时尝试动态加载模型。
无论我定义了新模型还是模型构建器,我添加的实体类型似乎都没有正确执行,并且一旦添加到 dbcontext 中似乎没有任何属性。
我不确定是否需要添加一个约定才能使其正常工作,或者我可能缺少什么。任何帮助将不胜感激。
_services.AddDbContext<DataContext>(options =>
{
switch (_config.DatabaseType.ToLower())
{
case "postgres":
options.UseNpgsql(_config.ConnectionString);
break;
case "sqlserver":
options.UseSqlServer(_config.ConnectionString);
break;
}
var convention = new Microsoft.EntityFrameworkCore.Metadata.Conventions.ConventionSet();
var mb = new ModelBuilder(convention);
foreach (var definition in definitionList)
{
mb.Entity(definition.Type);
}
options.UseModel(mb.Model);
});
解析为:
正确地创建了 5 个实体类型,但是一旦我展开其中一个实体类型,它就没有属性了。
如果我使用通过覆盖 dbcontext onmodelbuilding 添加 EntityType 的标准约定执行相同操作,则所有属性都正确...
【问题讨论】:
标签: c# .net asp.net-core entity-framework-core