This project contains the code for some EF6 extensions which make it easier to scan assemblies for entity model types, and for ComplexTypeConfiguration<>
and EntityTypeConfiguration<>
types.
- Install the Nuget package or copy this code into your project.
- Ensure your DBContext class has
using System.Data.Entity.ModelConfiguration;
- In your
OnModelCreating
method use the extension methods
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.GetTypesFromAssemblyType<C3D.Core.Models.Audit.Conventions.AuditTypesDefaultsConvention>().Add();
}
In this example the generic type is a type from the assembly I want to import from.
There are quite a few overloads/variations and parameters. The code documents some of them.
An example is
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.AddFromAssembly(typeof(SomeRandomType).Assembly,"My.Random.NameSpace");
}
This will add all CTC and ETC types from the assembly containing SomeRandomType
where the configuration type itself or the entity model type it is configuring is in the namespace My.Random.NameSpace
.
e.g. this will match both
namespace My.Random.NameSpace.ETC {
public class MyTypeConfiguration : EntityTypeConfiguration<My.Model.NameSpace.MyType> {
}
}
and
namespace My.Configuration.NameSpace {
public class MyTypeConfiguration : EntityTypeConfiguration<My.Random.NameSpace.Models.MyType> {
}
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
List<ITypeInfo> typeInfos = new();
typeInfos.AddRange(modelBuilder.Configurations.GetTypesFromAssemblyType<C3D.Core.Models.Audit.Conventions.AuditTypesDefaultsConvention>());
typeInfos.AddRange(modelBuilder.Configurations.GetTypesFromAssemblyType(this.GetType()));
typeInfos.ForEach(typeInfo => Log.InfoFormat("Detected TC {0}", typeInfo));
typeInfos.Add();
}
Better documentation, code documentation and add tests