@ -15,22 +15,22 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
@@ -15,22 +15,22 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
{
#region Fields
private string _ pkColumnName = string . Empty ;
private List < string > _ pkColumnNames = new List < string > ( ) ;
private string _ pkTableName = string . Empty ;
private string _f kColumnName = string . Empty ;
private List < string > _f kColumnNames = new List < string > ( ) ;
private string _f kTableName = string . Empty ;
#endregion
#region Properties
public string PKColumnName
public List < string > PKColumnNames
{
get { return _ pkColumnName ; }
get { return _ pkColumnNames ; }
set
{
_ pkColumnName = value ;
OnPropertyChanged ( "PKColumnName" ) ;
_ pkColumnNames = value ;
OnPropertyChanged ( "PKColumnNames " ) ;
}
}
@ -44,13 +44,13 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
@@ -44,13 +44,13 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
}
}
public string FKColumnName
public List < string > FKColumnNames
{
get { return _f kColumnName ; }
get { return _f kColumnNames ; }
set
{
_f kColumnName = value ;
OnPropertyChanged ( "FKColumnName" ) ;
_f kColumnNames = value ;
OnPropertyChanged ( "FKColumnNames " ) ;
}
}
@ -64,14 +64,14 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
@@ -64,14 +64,14 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
}
}
public IColumn PKColumn
public DatabaseObjectsCollection < IColumn > PKColumns
{
get
{
ITable table = PKTable ;
if ( table ! = null )
return GetColumnFromTableByName ( table , PKColumnName ) ;
return GetColumns FromTableByName ( table , PKColumnNames ) ;
else
return null ;
}
@ -86,25 +86,27 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
@@ -86,25 +86,27 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
{
get
{
if ( ! FKColumn . IsPrimaryKey & & FKColumn . IsNullable )
IColumn fkColumn = FKColumns . First ( ) ;
if ( ! fkColumn . IsPrimaryKey & & fkColumn . IsNullable )
return Cardinality . ZeroToOne ;
else if ( ! FKColumn . IsPrimaryKey & & ! FKColumn . IsNullable )
else if ( ! fk Column. IsPrimaryKey & & ! fk Column. IsNullable )
return Cardinality . One ;
else if ( ! FK Column. IsPrimaryKey )
else if ( ! fk Column. IsPrimaryKey )
return Cardinality . Many ;
else
return Cardinality . One ;
}
}
public IColumn FKColumn
public DatabaseObjectsCollection < IColumn > FKColumns
{
get
{
ITable table = FKTable ;
if ( table ! = null )
return GetColumnFromTableByName ( table , FKColumnName ) ;
return GetColumns FromTableByName ( table , FKColumnNames ) ;
else
return null ;
}
@ -119,12 +121,16 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
@@ -119,12 +121,16 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
{
get
{
if ( PKColumn . IsPrimaryKey )
return Cardinality . Many ;
else if ( ! PK Column. IsPrimaryKey & & ! FKColumn . IsNullable )
IColumn pkColumn = PKColumns . First ( ) ;
if ( ! pk Column. IsPrimaryKey & & ! FKColumns . First ( ) . IsNullable )
return Cardinality . One ;
else // !PKColumn.IsPrimaryKey && FKColumn.IsNullable
return Cardinality . ZeroToOne ;
if ( pkColumn . IsPrimaryKey & & pkColumn . IsForeignKey )
return Cardinality . One ;
if ( pkColumn . IsPrimaryKey )
return Cardinality . Many ;
return Cardinality . ZeroToOne ;
}
}
@ -149,9 +155,9 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
@@ -149,9 +155,9 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
return null ;
}
private IColumn GetColumnFromTableByName ( ITable table , string columnName )
{
return table . Items . FirstOrDefault ( c = > c . Name = = columnName ) ;
private DatabaseObjectsCollection < IColumn > GetColumns FromTableByName ( ITable table , List < string > columnNames )
{
return table . Items . Where ( c = > columnNames . Contains ( c . Name ) ) . ToDatabaseObjectsCollection ( ) ;
}
#endregion