Example #1
0
        /// <summary>
        /// Get or Create the schema
        /// </summary>
        /// <param name="database">the database</param>
        /// <param name="name">the name of the schema</param>
        /// <returns>old or new schema</returns>
        public static ModelSqlSchema Ensure(ModelSqlDatabase database, string name)
        {
            var sqlName = database.Name.Child(name, ObjectLevel.Schema);

            return(database.Schemas.GetValueOrDefault(sqlName)
                   ?? new ModelSqlSchema(database, name));
        }
Example #2
0
 /// <summary>
 /// Set the database
 /// </summary>
 /// <param name="modelSqlDatabase">the datbase to add</param>
 public void SetDatabase(ModelSqlDatabase modelSqlDatabase)
 {
     if ((object)modelSqlDatabase == null)
     {
         throw new ArgumentNullException(nameof(modelSqlDatabase));
     }
     this.Database[modelSqlDatabase.Name] = modelSqlDatabase;
 }
Example #3
0
 /// <summary>
 /// Add the database
 /// </summary>
 /// <param name="modelSqlDatabase">the datbase to add</param>
 public void AddDatabase(ModelSqlDatabase modelSqlDatabase)
 {
     if ((object)modelSqlDatabase == null)
     {
         throw new ArgumentNullException(nameof(modelSqlDatabase));
     }
     this.Database.Add(modelSqlDatabase);
 }
Example #4
0
        private static ModelSqlDatabase GetTestModelSqlDatabase()
        {
            ModelSqlServer modelSqlServer = new ModelSqlServer();

            modelSqlServer.Name = new SqlName(null, "default", ObjectLevel.Server);

            var serverScope = modelSqlServer.GetScope();

            var result = new ModelSqlDatabase(modelSqlServer, "OfaSchlupfer");

            result.Name = new SqlName(null, "OfaSchlupfer", ObjectLevel.Database);

            ModelSqlSchema schema = new ModelSqlSchema(result, "dbo");

            ModelSqlTable table = new ModelSqlTable(schema, "name");

            var col = (new ModelSqlColumn(table, "key"));

            return(result);
        }
Example #5
0
        public static ModelSqlTable Ensure(ModelSqlDatabase database, SqlName name)
        {
            var schema = ModelSqlSchema.Ensure(database, name.Parent?.Name ?? "dbo");

            return(Ensure(schema, name.Name));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ScopeNameResolverContext"/> class.
 /// </summary>
 /// <param name="database">the database</param>
 public ScopeNameResolverContext(ModelSqlDatabase database)
 {
     this.ModelDatabase  = database;
     this.ModelSqlServer = database.SqlServer;
 }
Example #7
0
        /// <summary>
        /// Resolve the name.
        /// </summary>
        /// <param name="name">the name to find the item thats called name</param>
        /// <param name="context">the resolver context.</param>
        /// <returns>the named object or null.</returns>
        public object ResolveObject(SqlName name, IScopeNameResolverContext context)
        {
            ModelSqlDatabase database = null;

            {
                var nameA = name.GetAncestorAtLevel(ObjectLevel.Database);
                if ((object)nameA != null)
                {
                    if ((nameA.LevelCount == 1) && (nameA.ObjectLevel == ObjectLevel.Database))
                    {
                        database = this._Database.GetValueOrDefault(nameA);
                    }
                }
                else if ((nameA.LevelCount == 2) && (nameA.ObjectLevel == ObjectLevel.Database))
                {
                    if (SqlNameEqualityComparer.Level1.Equals(this.Name, nameA.Parent /* Server */))
                    {
                        database = this._Database.GetValueOrDefault(nameA);
                    }
                    else
                    {
                        return(null);
                    }
                }
                if (ReferenceEquals(nameA, name))
                {
                    return(database);
                }
                if ((object)database != null)
                {
                    return(database.ResolveObject(name, context));
                }
            }
#if false
            {
                if ((name.Level == 1) && (name.ObjectLevel == ObjectLevel.Database))
                {
                    return(this._Database.GetValueOrDefault(name));
                }
                if ((name.Level == 1) && (name.ObjectLevel == ObjectLevel.Unknown))
                {
                    var result = this._Database.GetValueOrDefault(name);
                    if ((object)result != null)
                    {
                        return(result);
                    }
                }
                if ((name.Level == 2) && (name.ObjectLevel == ObjectLevel.Database))
                {
                    if (SqlNameEqualityComparer.Level1.Equals(this.Name, name.Parent))
                    {
                        var result = this._Database.GetValueOrDefault(name);
                        if ((object)result != null)
                        {
                            return(result);
                        }
                    }
                    else
                    {
                        return(null);
                    }
                }
                if ((name.Level == 2) && (name.ObjectLevel == ObjectLevel.Unknown))
                {
                    if (SqlNameEqualityComparer.Level1.Equals(this.Name, name.Parent))
                    {
                        var result = this._Database.GetValueOrDefault(name);
                        if ((object)result != null)
                        {
                            return(result);
                        }
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
#warning TODO check if name has 3 parts - than use the 3rd and go ahead with 2
            {
                var schemaName = name.Parent;
                var dbName     = schemaName?.Parent;
                if (!ReferenceEquals(dbName, null) && ReferenceEquals(dbName?.Parent, SqlName.Root))
                {
                    var result = this._Database.GetValueOrDefault(dbName);
                    if ((object)result != null)
                    {
                        return(result);
                    }
                }

                var serverName = dbName?.Parent;
                if (!ReferenceEquals(serverName, null) && ReferenceEquals(serverName?.Parent, SqlName.Root))
                {
                    if (serverName.Name == this.Name.Name)
                    {
                        var result = this._Database.GetValueOrDefault(serverName);
                        if ((object)result != null)
                        {
                            return(result);
                        }
                    }
                }
            }
#endif
            return(null);
        }
Example #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ModelSqlSchema"/> class.
 /// </summary>
 /// <param name="database">the owner</param>
 /// <param name="name">the name of the schema</param>
 public ModelSqlSchema(ModelSqlDatabase database, string name)
     : this(database.GetScope())
 {
     this.Name     = database.Name.Child(name, ObjectLevel.Schema);
     this.Database = database;
 }