c# - Is there a better way to implement OnModelCreating method in EF? -
we have products class implements dbcontext. onmodelcreating method has code so:
modelbuilder.configurations.add(new customproductmap()); modelbuilder.configurations.add(new customproductdetailmap()); modelbuilder.configurations.add(new custprodcatmappingmap()); modelbuilder.configurations.add(new custproductskumap()); ...
here entities added 1 one.
i sure there's better way either using reflection or using ioc container.
can show me example can implement myself?
you can use following query instances of types inherited entitytypeconfiguration or complextypeconfiguration:
var maps = in appdomain.currentdomain.getassemblies() a.getname().name != "entityframework" // skip ef assembly t in a.gettypes() t.basetype != null && t.basetype.isgenerictype let basedef = t.basetype.getgenerictypedefinition() basedef == typeof(entitytypeconfiguration<>) || basedef == typeof(complextypeconfiguration<>) select activator.createinstance(t);
all need after adding maps modelbuilder configurations:
foreach (var map in maps) modelbuilder.configurations.add((dynamic)map);
keep in mind, use dynamic
keyword because activator returns instances type object
. need call appropriate overload of add
method based on actual map type.
Comments
Post a Comment