JPB.DataAccess.Helper.LocalDb.LocalDbManager.AddTable C# (CSharp) Method

AddTable() private method

private AddTable ( ILocalDbReposetoryBaseInternalUsage repro ) : void
repro ILocalDbReposetoryBaseInternalUsage
return void
		internal void AddTable(ILocalDbReposetoryBaseInternalUsage repro)
		{
			_database.Add(repro.TypeInfo.Type, repro);
		}

Usage Example

        /// <summary>
        ///     Internal Usage
        /// </summary>
        /// <param name="type"></param>
        /// <param name="keyGenerator"></param>
        /// <param name="config"></param>
        /// <param name="useOrignalObjectInMemory"></param>
        private void Init(Type type,
                          ILocalDbPrimaryKeyConstraint keyGenerator,
                          DbConfig config,
                          bool useOrignalObjectInMemory)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }
            if (_config != null)
            {
                throw new InvalidOperationException("Multibe calls of Init are not supported");
            }

            _keepOriginalObject = useOrignalObjectInMemory;
            _config             = config;
            _databaseDatabase   = LocalDbManager.Scope;
            if (_databaseDatabase == null)
            {
                throw new NotSupportedException("Please define a new DatabaseScope that allows to seperate" +
                                                " multibe tables of the same type in the same Application");
            }

            _typeInfo = _config.GetOrCreateClassInfoCache(type);
            if (_typeInfo.PrimaryKeyProperty == null)
            {
                throw new NotSupportedException(string.Format("Entitys without any PrimaryKey are not supported. " +
                                                              "Type: '{0}'", type.Name));
            }

            TypeKeyInfo = _config.GetOrCreateClassInfoCache(_typeInfo.PrimaryKeyProperty.PropertyType);

            if (TypeKeyInfo == null)
            {
                throw new NotSupportedException(string.Format("Entitys without any PrimaryKey are not supported. " +
                                                              "Type: '{0}'", type.Name));
            }

            if (!TypeKeyInfo.Type.IsValueType)
            {
                throw new NotSupportedException(string.Format("Entitys without any PrimaryKey that is of " +
                                                              "type of any value-type cannot be used. Type: '{0}'", type.Name));
            }

            if (!_keepOriginalObject)
            {
                if (!TypeInfo.FullFactory)
                {
                    TypeInfo.CreateFactory(config);
                    if (!TypeInfo.FullFactory)
                    {
                        throw new NotSupportedException(string.Format("The given type did not provide a Full ado.net constructor " +
                                                                      "Type: '{0}'", TypeInfo));
                    }
                }
            }

            ILocalDbPrimaryKeyConstraint primaryKeyConstraint;

            if (keyGenerator != null)
            {
                primaryKeyConstraint = keyGenerator;
            }
            else
            {
                ILocalDbPrimaryKeyConstraint defaultKeyGen;
                if (LocalDbManager.DefaultPkProvider.TryGetValue(TypeKeyInfo.Type, out defaultKeyGen))
                {
                    primaryKeyConstraint = defaultKeyGen.Clone();
                }
                else
                {
                    throw new NotSupportedException(
                              string.Format(
                                  "You must specify ether an Primary key that is of one of this types " +
                                  "({1}) " +
                                  "or invoke the ctor with an proper keyGenerator. " +
                                  "Type: '{0}'",
                                  type.Name,
                                  LocalDbManager
                                  .DefaultPkProvider
                                  .Keys
                                  .Select(f => f.Name)
                                  .Aggregate((e, f) => e + "," + f)));
                }
            }

            Constraints = new ConstraintCollection <TEntity>(this, primaryKeyConstraint);
            _triggers   = new TriggerForTableCollection <TEntity>(this);
            _indexes    = new IndexCollection <TEntity>();
            Base        = new ConcurrentDictionary <object, TEntity>();
            _databaseDatabase.AddTable(this);
            _databaseDatabase.SetupDone += DatabaseDatabaseOnSetupDone;
        }