- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有没有人知道一种方法或有一个实现来应用从 IEntityTypeConfiguration<>
派生的所有类到 DbContext
在运行时?
似乎没有内置任何东西,并通过以下方式手动加载每一个:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new Table1Config())
modelBuilder.ApplyConfiguration(new Table2Config())
...
modelBuilder.ApplyConfiguration(new TableNConfig())
}
对于具有许多表的数据库来说将证明相当乏味。
最佳答案
你可以写一个扩展方法如下:
public static class ModelBuilderExtensions
{
public static void ApplyAllConfigurations(this ModelBuilder modelBuilder)
{
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.GetInterfaces()
.Any(gi => gi.IsGenericType && gi.GetGenericTypeDefinition() == typeof(IEntityTypeConfiguration<>))).ToList();
foreach (var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.ApplyConfiguration(configurationInstance);
}
}
}
然后在OnModelCreating
中如下:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyAllConfigurations();
}
从 EF Core 2.2
开始,您无需编写任何自定义扩展方法。 EF Core 2.2
为此添加了 ApplyConfigurationsFromAssembly
扩展方法。您可以按如下方式使用它:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfigurationsFromAssembly(typeof(UserConfiguration).Assembly); // Here UseConfiguration is any IEntityTypeConfiguration
}
谢谢。
关于c# - 在 EF Core 中应用所有 IEntityTypeConfiguration 派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47654500/
在 EF Core 2.0 中,我们能够从 IEntityTypeConfiguration 派生更清晰的 Fluent API 映射 (source)。 如何扩展此模式以利用基础实体?在下面的示例中
好的,所以我正在使用带有点网核心和代码优先迁移的 Entity Framework 。这本身不是问题,我只是想知道是否有人遇到过更好的方法。 目前我有很多这样的实体类型配置 public class
我正在使用 EF Core 2.1 创建数据库。我可以设置像 这样的列的默认值 public class SchoolContext : DbContext { .... protec
有没有人知道一种方法或有一个实现来应用从 IEntityTypeConfiguration<> 派生的所有类到 DbContext在运行时? 似乎没有内置任何东西,并通过以下方式手动加载每一个: pr
我需要访问我的 IEntityTypeConfiguration 类中的一些 DI 服务,以便找到一些用户 session 信息并执行一些查询过滤。 我可以通过执行以下操作以“手动”方式实现这一目标.
我正在尝试使用 EF Core 2.0 中新增的 EntityConfiguration 接口(interface)。 附录 可能有助于查看 Message 类 public class Messag
我是一名优秀的程序员,十分优秀!