Skip to main content

関連先のモデルを取得する

関連先のモデルを取得する

フィールド名を指定して関連先のモデルを取得する場合は、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} ");
}