示例#1
0
        /// <summary>
        ///     Creates and configures the <see cref="DbModelBuilder" /> instance that will be used to build the
        ///     <see cref="DbCompiledModel" />.
        /// </summary>
        /// <returns> The builder. </returns>
        public DbModelBuilder CreateModelBuilder()
        {
            var versionAttribute = new AttributeProvider().GetAttributes(Owner.GetType())
                                   .OfType <DbModelBuilderVersionAttribute>()
                                   .FirstOrDefault();
            var version = versionAttribute != null ? versionAttribute.Version : DbModelBuilderVersion.Latest;

            var modelBuilder = new DbModelBuilder(version);

            var modelNamespace = EdmUtil.StripInvalidCharacters(Owner.GetType().Namespace);

            if (!String.IsNullOrWhiteSpace(modelNamespace))
            {
                modelBuilder.Conventions.Add(new ModelNamespaceConvention(modelNamespace));
            }

            var modelContainer = EdmUtil.StripInvalidCharacters(Owner.GetType().Name);

            if (!String.IsNullOrWhiteSpace(modelContainer))
            {
                modelBuilder.Conventions.Add(new ModelContainerConvention(modelContainer));
            }

            new DbSetDiscoveryService(Owner).RegisterSets(modelBuilder);

            Owner.CallOnModelCreating(modelBuilder);

            if (OnModelCreating != null)
            {
                OnModelCreating(modelBuilder);
            }

            return(modelBuilder);
        }