|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DatabaseSchemaModel.Raw;
namespace DatabaseSchemaModel
{
/// <summary>
/// Description of a database table relationship, from the perspective of the foreign
/// key table.
/// </summary>
public class Relationship
{
/// <summary>
/// The name of the relationship.
/// </summary>
public string Name;
/// <summary>
/// The foreign key columns included in this relationship.
/// </summary>
public List<Column> ForeignKeyColumns = new List<Column>();
/// <summary>
/// The primary key table that the relationship is with.
/// </summary>
public Table PrimaryKeyTable = null;
/// <summary>
/// The primary key columns from the primary key table that are included in this relationship.
/// </summary>
public List<Column> PrimaryKeyColumns = new List<Column>();
/// <summary>
/// Initializes a new instance of the <see cref="Relationship"/> class.
/// </summary>
public Relationship()
{ }
/// <summary>
/// Initializes a new instance of the <see cref="Relationship"/> class.
/// </summary>
/// <param name="context">The context.</param>
/// <param name="raw">The raw description from the XML.</param>
internal Relationship(
ReadContext context,
relationship raw
)
{
context.Stack.Push("Reading Relationship: " + context.ReadingTableItem);
Name = raw.name;
relationshipColumn[] rawPrimaryKeyTableColumns = raw.primaryKeyTable.column;
string stackTrace = context.StackTrace;
foreach(relationshipColumn rawRelationshipColumn in raw.foreignKeyColumns)
{
ForeignKeyColumns.Add(context.ReadingTable.ResolveColumn(stackTrace, rawRelationshipColumn.name));
}
context.ResolveTableReferences.Add(raw.primaryKeyTable.name, delegate(Table table)
{
PrimaryKeyTable = table;
foreach (relationshipColumn rawRelationshipColumn in rawPrimaryKeyTableColumns)
{
PrimaryKeyColumns.Add(table.ResolveColumn(stackTrace, rawRelationshipColumn.name));
}
});
context.Stack.Pop();
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Entertainment software.
Web development.