diff --git a/Build/Build.proj b/Build/Build.proj index 2d0410a..622bd09 100644 --- a/Build/Build.proj +++ b/Build/Build.proj @@ -23,7 +23,7 @@ 1 3 2012 - 1 + 3 $(BuildNumber) $(MajorVersion).$(MinorVersion).$(BuildNumber).$(Revision) diff --git a/Common/CommonAssemblyInfo.cs b/Common/CommonAssemblyInfo.cs index 259c0f1..46c0c4d 100644 --- a/Common/CommonAssemblyInfo.cs +++ b/Common/CommonAssemblyInfo.cs @@ -8,5 +8,5 @@ [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("1.3.1.0")] -[assembly: AssemblyFileVersion("1.3.1.0")] +[assembly: AssemblyVersion("1.3.3.0")] +[assembly: AssemblyFileVersion("1.3.3.0")] diff --git a/Efmap.nuspec b/Efmap.nuspec index 42a6443..cfb2b8b 100644 --- a/Efmap.nuspec +++ b/Efmap.nuspec @@ -2,7 +2,7 @@ Efmap - 1.3.1.0 + 1.3.3.0 Rui Carvalho Rui Carvalho http://opensource.org/licenses/MIT diff --git a/Src/Efmap/Helpers/DbContextExtensions.cs b/Src/Efmap/Helpers/DbContextExtensions.cs index a769f6b..d0ce53d 100644 --- a/Src/Efmap/Helpers/DbContextExtensions.cs +++ b/Src/Efmap/Helpers/DbContextExtensions.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Data.Entity.Core.Metadata.Edm; using System.Linq; using System.Text; using System.Data.SqlClient; @@ -9,6 +8,7 @@ using System.Data.Entity; using System.Reflection; using System.Data.Entity.ModelConfiguration; +using System.Data.Entity.ModelConfiguration.Configuration; using System.Data.Entity.Infrastructure; using Efmap.Bootstrap; using System.IO; @@ -99,6 +99,46 @@ public static void AutoLoadForThisContext(this DbContext context, DbModelBuilder } } + public static void AutoLoadForThisContextWithDbSet(this DbContext context, DbModelBuilder modelBuilder) + { + //verify options for modelbuilder before + if (InitializerFactory.IsOptionActivated("RemoveMetaDataStatus")) + { + modelBuilder.Conventions.Remove(); + } + + Type tc = context.GetType(); + var props = tc.GetProperties().Where( + p => p.PropertyType.IsGenericType + && p.PropertyType.GetGenericTypeDefinition() == typeof(DbSet<>) + + ).Select(s => s.PropertyType.GetGenericArguments()); + + Assembly asm = Assembly.GetAssembly(context.GetType()); + Type loadType = typeof(EntityTypeConfiguration<>); + + foreach (var dataType in props) + { + Type checkType = loadType.MakeGenericType(dataType); + var findType = asm.GetTypes().Where(t => t.BaseType == checkType).FirstOrDefault(); + if (findType != null) + { + var obj = Activator.CreateInstance(findType); + Type registrar = typeof(ConfigurationRegistrar); + MethodInfo[] registrarMethods = registrar.GetMethods() + .Where(m => m.Name == "Add" && (m.GetGenericArguments().Where(p => p.Name == "TEntityType").Count() == 1)).ToArray(); + if (registrarMethods.Length == 1) + { + MethodInfo registrarAdd = registrarMethods[0]; + MethodInfo genericAdd = registrarAdd.MakeGenericMethod(dataType); + + var result = genericAdd.Invoke(modelBuilder.Configurations, new[] { obj }); + } + + } + + } + } public static string GetSqlCreationScript(this DbContext context) {