Description of ForeignKey.
Inheritance: Constraint, DatabaseFramework.ForeignKey
 /// <summary>
 /// 
 /// </summary>
 /// <param name="newForeignKey"></param>
 /// <returns></returns>
 public ForeignKey getCorrespondingForeignKey(ForeignKey newForeignKey)
 {
     var correspondingForeignKey = this.constraints.OfType<ForeignKey>()
                     .FirstOrDefault( x => x.name + x.properties == newForeignKey.name + newForeignKey.properties);
     if (correspondingForeignKey == null) correspondingForeignKey = this.constraints.OfType<ForeignKey>()
         .FirstOrDefault( x => x.logicalAssociation != null && x.logicalAssociation.Equals(newForeignKey.logicalAssociation));
     return correspondingForeignKey;
 }
 public EAForeignKeyTransformer(ForeignKey foreignKey, UTF_EA.Association association,NameTranslator nameTranslator)
     : this(nameTranslator)
 {
     _foreignKey = foreignKey;
     _logicalAssociation = association;
 }
 public override DB.DatabaseItem createAsNewItem(DB.DatabaseItem owner, bool save = true)
 {
     Table newTable = owner as Table;
     Database existingDatabase = owner as Database;
     if (newTable != null)
     {
         existingDatabase = newTable.databaseOwner as Database;
     }
     if (newTable == null)
     {
         //look for corresponding table in existingDatabase
         newTable = (Table)existingDatabase.tables.FirstOrDefault(x => x.name == this.ownerTable.name);
     }
     var newForeignTable = existingDatabase.tables.FirstOrDefault(x => x.name == this.foreignTable.name);
     if (newTable != null && newForeignTable != null)
     {
         var newForeignKey = new ForeignKey(newTable,this._involvedColumns);
         newForeignKey.name = name;
         newForeignKey._foreignTable = (Table)newForeignTable;
         newForeignKey._logicalAssociation = _logicalAssociation;
         newForeignKey.isOverridden = isOverridden;
         newForeignKey.derivedFromItem = this;
         if (save) newForeignKey.save();
         return newForeignKey;
     }
     return null;
 }