/// <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)); }
/// <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; }
/// <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); }
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); }
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; }
/// <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); }
/// <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; }