gpt4 book ai didi

c# - 如何通过反射加载所有 Entity Framework 4.1 实体配置实体?

转载 作者:太空狗 更新时间:2023-10-30 00:03:34 27 4
gpt4 key购买 nike

在我的 OnModelCreating我的数据上下文的方法我目前正在手动映射我所有的实体配置映射类,例如:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserMap());
// 20 or so mapping configuration below
}

我想通过反射来简化这个,所以我有以下代码:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Find all EntityTypeConfiguration classes in the assembly
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
foreach (Type t in asm.GetTypes())
if (t.IsDerivedFromOpenGenericType(typeof(EntityTypeConfiguration<>)))
modelBuilder.Configurations.Add(Activator.CreateInstance(t));
}

IsDerivedFromOpenGenericType来自this question并正常工作。

问题是这不能编译因为Activator.CreateInstance(t)返回 object , 但模型构建器期待一个 System.Data.Entity.ModelConfiguration.ComplexTypeConfiguration<TComplexType> .

通常在使用 Activator 时class 我只是将对象转换为我期望的类型 t成为(或我希望类(class)采取的),但由于这是使用泛型,我不知道有什么方法可以做到这一点。

有没有人有什么想法?

最佳答案

我不确定为什么这个信息很难找到(至少对我来说是这样),但是有一个更简单的方法来详细说明 here .

public class MyDbContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.AddFromAssembly(Assembly.GetAssembly(GetType())); //Current Assembly
base.OnModelCreating(modelBuilder);
}
}

关于c# - 如何通过反射加载所有 Entity Framework 4.1 实体配置实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7499829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com