関連先のモデルを取得する
関連先のモデルを取得する
フィールド名を指定して関連先のモデルを取得する場合は、IModel
オブジェクトのGetFieldValues
メソッドを用います。
public void GetFieldValues(ICommandContext c, ICommandParams p)
{
// 表示しているモデルを取得します
IModel model = c.App.Workspace.CurrentModel;
// フィールド名を指定して関連先のモデルを取得します
var fieldName = "SomeFieldName";
IModelCollection relatedModels = model.GetFieldValues(fieldName);
// モデル名を出力します
c.App.Output.WriteLine("sample", $"Model: {model.Name}");
// 関連先のモデル名を出力します
c.App.Output.WriteLine("sample", $"FieldName: {fieldName}");
foreach (IModel relatedModel in relatedModels)
{
c.App.Output.WriteLine("sample", $"Related Model: {relatedModel.Name} ");
}
}
関連から取得する
関連を取得している場合は関連端(IRelationship
オブジェクトのSource
プロパティ、Target
プロパティ)を調べることで関連先のモデルを取得できます。
public void GetRelatedModelsFromRelationship(ICommandContext c, ICommandParams p)
{
// Id を指定して関連を取得します
IRelationship relationship = c.App.Workspace.CurrentProject.GetRelationshipById("SomeRelationshipId");
// 関連から関連端(関連元、関連先)を取得します
IModel source = relationship.Source;
IModel target = relationship.Target;
c.App.Output.WriteLine("sample", $"Relationship: {relationship.Name} ");
c.App.Output.WriteLine("sample", $" Source: {source.Name} ");
c.App.Output.WriteLine("sample", $" Target: {target.Name} ");
}