private Domain BuildDomain(ForeignKeyMode foreignKeyMode, DomainUpgradeMode upgradeMode)
        {
            var configuration = DomainConfigurationFactory.Create();

            configuration.Types.Register(typeof(model.EmploymentContract).Assembly, typeof(model.EmploymentContract).Namespace);
            configuration.UpgradeMode    = upgradeMode;
            configuration.ForeignKeyMode = foreignKeyMode;
            return(Domain.Build(configuration));
        }
        private void FillData(ForeignKeyMode mode)
        {
            var domain = BuildDomain(mode, DomainUpgradeMode.Recreate);

            using (var session = domain.OpenSession())
                using (var transaction = session.OpenTransaction())
                {
                    var worker = new model.Worker {
                        FirstName = "John", LastName = "Smith"
                    };
                    new model.EmploymentContract {
                        ContractNumber = "w123456", CreationDate = DateTime.Now, TakesEffectFrom = DateTime.Now.Date
                    };
                    transaction.Complete();
                }
        }
        /// <summary>
        /// Copies the properties from the <paramref name="source"/>
        /// configuration to this one.
        /// Used by <see cref="ConfigurationBase.Clone"/> method implementation.
        /// </summary>
        /// <param name="source">The configuration to copy properties from.</param>
        /// <inheritdoc/>
        protected override void CopyFrom(ConfigurationBase source)
        {
            base.CopyFrom(source);

            var configuration = (DomainConfiguration)source;

            name                            = configuration.Name;
            connectionInfo                  = configuration.ConnectionInfo;
            defaultSchema                   = configuration.DefaultSchema;
            defaultDatabase                 = configuration.DefaultDatabase;
            types                           = (DomainTypeRegistry)configuration.Types.Clone();
            linqExtensions                  = (LinqExtensionRegistry)configuration.LinqExtensions.Clone();
            namingConvention                = (NamingConvention)configuration.NamingConvention.Clone();
            keyCacheSize                    = configuration.KeyCacheSize;
            keyGeneratorCacheSize           = configuration.KeyGeneratorCacheSize;
            queryCacheSize                  = configuration.QueryCacheSize;
            recordSetMappingCacheSize       = configuration.RecordSetMappingCacheSize;
            sessions                        = (SessionConfigurationCollection)configuration.Sessions.Clone();
            upgradeMode                     = configuration.UpgradeMode;
            foreignKeyMode                  = configuration.ForeignKeyMode;
            serviceContainerType            = configuration.ServiceContainerType;
            includeSqlInExceptions          = configuration.IncludeSqlInExceptions;
            forcedServerVersion             = configuration.ForcedServerVersion;
            buildInParallel                 = configuration.BuildInParallel;
            allowCyclicDatabaseDependencies = configuration.AllowCyclicDatabaseDependencies;
            collation                       = configuration.Collation;
            connectionInitializationSql     = configuration.ConnectionInitializationSql;
            schemaSyncExceptionFormat       = configuration.SchemaSyncExceptionFormat;
            multidatabaseKeys               = configuration.MultidatabaseKeys;
            ensureConnectionIsAlive         = configuration.EnsureConnectionIsAlive;
            options                         = configuration.Options;
            databases                       = (DatabaseConfigurationCollection)configuration.Databases.Clone();
            mappingRules                    = (MappingRuleCollection)configuration.MappingRules.Clone();
            keyGenerators                   = (KeyGeneratorConfigurationCollection)configuration.KeyGenerators.Clone();
            ignoreRules                     = (IgnoreRuleCollection)configuration.IgnoreRules.Clone();
            shareStorageSchemaOverNodes     = configuration.ShareStorageSchemaOverNodes;
            versioningConvention            = (VersioningConvention)configuration.VersioningConvention.Clone();
        }
 internal bool Supports(ForeignKeyMode modeToCheck)
 {
     return((foreignKeyMode & modeToCheck) == modeToCheck);
 }