0

FindByFleetAndJob()ActiveRecord クラス (以下の )の子オブジェクトに基づいてクエリを実行する必要があります。通常はオブジェクトのインスタンスを使用しますが、この場合はインスタンスを使用せず、クエリ用のオブジェクトを取得するためだけにデータベースに 2 回アクセスしたくありません。式のダミーオブジェクトを作成して、次のことを試みました。

[ActiveRecord("Alerts")]
public class Alert : ActiveRecordBase<Alert>
{
    [PrimaryKey]
    public int Id { get; set; }

    [BelongsTo("AssociatedFleetId")]
    public Fleet AssociatedFleet { get; set; }

    [BelongsTo("AssociatedJobId")]
    public Job AssociatedJob { get; set; }

    ...

    public static Alert[] FindByFleetAndJob(int fleetId, int jobId)
    {
        var criteria = new List<ICriterion>();
        criteria.Add(Expression.Eq("AssociatedFleet", new Fleet { Id = fleetId }));
        criteria.Add(Expression.Eq("AssociatedJob", new Job { Id = jobId }));
        return FindAll(criteria.ToArray());
    }
}

私は他のクエリでこれを成功させましたが、何らかの理由でこれがスローされます:

オブジェクトは保存されていない一時インスタンスを参照しています - フラッシュする前に一時インスタンスを保存してください。タイプ: DataObjects.Job、エンティティ: DataObjects.FCJob#123

したがって、私の質問は、この例外に対処する方法はありますか、またはオブジェクト自体ではなく子オブジェクトの ID を渡すようにクエリを変更する方法はありますか? 当然のことながら、以下を実行しても AssociatedJobId という名前のプロパティは見つかりません。

criteria.Add(Expression.Eq("AssociatedJobId", jobId));

これは基本的に私が達成したいことですが。

どうもありがとう。

4

1 に答える 1