You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.1 KiB
91 lines
2.1 KiB
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Marr.Data.Mapping;
|
|
|
|
namespace Marr.Data.QGen
|
|
{
|
|
/// <summary>
|
|
/// This class represents a View. A view can hold multiple tables (and their columns).
|
|
/// </summary>
|
|
public class View : Table, IEnumerable<Table>
|
|
{
|
|
private string _viewName;
|
|
private Table[] _tables;
|
|
private ColumnMapCollection _columns;
|
|
|
|
public View(string viewName, Table[] tables)
|
|
: base(tables[0].EntityType, JoinType.None)
|
|
{
|
|
_viewName = viewName;
|
|
_tables = tables;
|
|
}
|
|
|
|
public Table[] Tables
|
|
{
|
|
get { return _tables; }
|
|
}
|
|
|
|
public override string Name
|
|
{
|
|
get
|
|
{
|
|
return _viewName;
|
|
}
|
|
set
|
|
{
|
|
_viewName = value;
|
|
}
|
|
}
|
|
|
|
public override string Alias
|
|
{
|
|
get
|
|
{
|
|
return base.Alias;
|
|
}
|
|
set
|
|
{
|
|
base.Alias = value;
|
|
|
|
// Sync view tables
|
|
foreach (Table table in _tables)
|
|
{
|
|
table.Alias = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets all the columns from all the tables included in the view.
|
|
/// </summary>
|
|
public override ColumnMapCollection Columns
|
|
{
|
|
get
|
|
{
|
|
if (_columns == null)
|
|
{
|
|
var allColumns = _tables.SelectMany(t => t.Columns);
|
|
_columns = new ColumnMapCollection();
|
|
_columns.AddRange(allColumns);
|
|
}
|
|
|
|
return _columns;
|
|
}
|
|
}
|
|
|
|
public IEnumerator<Table> GetEnumerator()
|
|
{
|
|
foreach (Table table in _tables)
|
|
{
|
|
yield return table;
|
|
}
|
|
}
|
|
|
|
IEnumerator IEnumerable.GetEnumerator()
|
|
{
|
|
return GetEnumerator();
|
|
}
|
|
}
|
|
}
|