internal EditDatabaseScope(LocalDbManager dbManager)
     : base(dbManager)
 {
     Drop  = new DropCommand(this);
     Scope = dbManager;
 }
		internal EditDatabaseScope(LocalDbManager dbManager) 
			: base(dbManager)
		{
			Drop = new DropCommand(this);
			Scope = dbManager;
		}
        /// <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;
        }
 internal DataContent(LocalDbManager instance)
 {
     _instance = instance;
 }
Beispiel #5
0
		internal DataContent(LocalDbManager instance)
		{
			_instance = instance;
		}