Exemplo n.º 1
0
 public AutoIdentityDAC(
     IDAC decoratedDAC,
     AutoIdentityPolicy autoIdentityPolicy     = AutoIdentityPolicy.UseDBMSAutoIncrement,
     PrimaryKeyConvention primaryKeyConvention = PrimaryKeyConvention.Default)
     : base(decoratedDAC)
 {
     DefaultAutoIdentityPolicy   = autoIdentityPolicy;
     DefaultPrimaryKeyConvention = primaryKeyConvention;
 }
Exemplo n.º 2
0
        protected NhibernateConfigurator(bool shouldMapDtos = true)
        {
            ShouldMapDtos = shouldMapDtos;

            var assembliesToMap                   = GetAssembliesToMap();
            var includeBaseTypes                  = GetIncludeBaseTypes();
            var ignoreBaseTypes                   = GetIgnoreBaseTypes();
            var discriminatedTypes                = GetDiscriminatedTypes();
            var mapDefaultConventions             = ShouldMapDefaultConventions();
            var assemblyWithAdditionalConventions = GetAssembliesWithAdditionalConventions();

            _configuration = new Configuration();
            _configuration.Configure();
            var autoPersistenceModel = AutoMap.Assemblies(
                new AutomappingConfiguration(discriminatedTypes.ToArray(), GetFuncToDetermineIfTypeIsDto(), ShouldMapDtos),
                assembliesToMap
                );

            includeBaseTypes.Each(x => autoPersistenceModel.IncludeBase(x));
            ignoreBaseTypes.Each(x => autoPersistenceModel.IgnoreBase(x));
            assembliesToMap.Each(x => autoPersistenceModel.UseOverridesFromAssembly(x));
            if (mapDefaultConventions)
            {
                DisableLazyLoadForDtosConvention.SetFuncToDetermineIfTypeIsDto(GetFuncToDetermineIfTypeIsDto());
                HasManyForDomainConvention.SetPropertyNameToBackingFieldNameFunc(GetPropertyNameToBackingFieldNameFunc());
                PrimaryKeyConvention.SetIdentityHiLoMaxLo(GetIdentityHiLoMaxLo());
                autoPersistenceModel.Conventions.AddFromAssemblyOf <PrimaryKeyConvention>();
            }
            assemblyWithAdditionalConventions.Each(x => autoPersistenceModel.Conventions.AddAssembly(x));

            if (ShouldDoubleQuoteTableNamesForDerivedClasses(_configuration))
            {
                _configuration.SetNamingStrategy(new QuoteTableNamesForDerivedClassesNamingStrategy());
            }

            var fluentConfiguration = Fluently.Configure(_configuration)
                                      .Mappings(x =>
            {
                var mappingsContainer = x.AutoMappings.Add(autoPersistenceModel);
                var exportNhibernateMappingsFolder = GetExportNhibernateMappingsFolder();
                if (!string.IsNullOrWhiteSpace(exportNhibernateMappingsFolder))
                {
                    mappingsContainer.ExportTo(exportNhibernateMappingsFolder);
                }
            });

            _sessionFactory = fluentConfiguration.BuildSessionFactory();
        }
        /// <summary>
        /// Main NHibernate configuration method.
        /// It configures NHibernate in an opinionated way, with an option to override various small NHibernate settings by overriding
        /// other virtual methods.
        /// This method can be overridden to completely customize NHibernate configuration.
        /// </summary>
        /// <param name="shouldMapDtos">See the constructor</param>
        /// <param name="configurationFileName">See the constructor</param>
        /// <param name="connectionString">See the constructor</param>
        /// <param name="sessionFactory">NHibernate session factory</param>
        /// <param name="configuration">NHibernate configuration</param>
        protected virtual void ConfigureNhibernate(
            bool shouldMapDtos,
            string configurationFileName,
            string connectionString,
            out ISessionFactory sessionFactory,
            out Configuration configuration
            )
        {
            configuration = new Configuration();
            if (string.IsNullOrWhiteSpace(configurationFileName))
            {
                configuration.Configure();
            }
            else
            {
                configuration.Configure(configurationFileName);
            }

            var assembliesToMap = GetAssembliesToMap();
            var isTypeDto       = GetIsTypeDtoFunc();

            var autoPersistenceModel = AutoMap.Assemblies(
                GetAutomappingConfiguration(shouldMapDtos, isTypeDto),
                assembliesToMap
                );

            GetIncludeBaseTypes().Each(x => autoPersistenceModel.IncludeBase(x));
            GetIgnoreBaseTypes().Each(x => autoPersistenceModel.IgnoreBase(x));
            assembliesToMap.Each(x => autoPersistenceModel.UseOverridesFromAssembly(x));

            _configureConventions();

            configuration.SetNamingStrategy(GetNamingStrategy());

            var fluentConfiguration = Fluently.Configure(configuration)
                                      .Mappings(x =>
            {
                var mappingsContainer            = x.AutoMappings.Add(autoPersistenceModel);
                var exportNhibernateMappingsPath = GetExportNhibernateMappingsPath();
                if (!string.IsNullOrWhiteSpace(exportNhibernateMappingsPath))
                {
                    mappingsContainer.ExportTo(exportNhibernateMappingsPath);
                }
            });

            if (!string.IsNullOrWhiteSpace(connectionString))
            {
                configuration.SetProperty(Environment.ConnectionString, connectionString);
            }

            AdditionalConfiguration(configuration);

            sessionFactory = fluentConfiguration.BuildSessionFactory();

            void _configureConventions()
            {
                if (ShouldUseDefaultConventions())
                {
                    DisableLazyLoadForDtosConvention.Initialize(isTypeDto);
                    HasManyConvention.Initialize(
                        GetCollectionCascadeInstanceAction(),
                        GetBackingFieldNameFromPropertyNameFunc(),
                        GetCollectionInstanceAccessAction()
                        );
                    PrimaryKeyConvention.Initialize(GetIdentityHiLoMaxLo());

                    var disabledConventions = GetDisabledConventions();
                    var conventionTypes     = Assembly.GetExecutingAssembly().GetTypes()
                                              .Where(type => typeof(IConvention).IsAssignableFrom(type) &&
                                                     !type.IsInterface &&
                                                     !disabledConventions.Contains(type))
                                              .ToList();

                    conventionTypes.Each(conventionType => autoPersistenceModel.Conventions.Add(conventionType));
                }

                GetAssembliesWithAdditionalConventions().Each(assembly => autoPersistenceModel.Conventions.AddAssembly(assembly));
                GetAdditionalConventions().Each(conventionType => autoPersistenceModel.Conventions.Add(conventionType));
            }
        }
 public void CreateConvention()
 {
     convention = new PrimaryKeyConvention();
 }