わかりましたので、mySql からデータを取得すると、 ReadOnlyCollection として返され<Tuple<DbAudit, DbAuditItem>>
ます。ここで、これから my Audit
andAuditItem
クラスにマップする必要があります。そのAudit
部分は次のように機能しています:
return audits.Select((AuditMapper.Map)).ToReadOnlyCollection();
そして、監査マッパーでこれが起こります。
public static Audit Map(Tuple<DbAudit, DbAuditItem> source)
{
if (source == null)
return null;
return new Audit(
null,
(AuditKind) source.Item1.AuditKindId,
source.Item1.DateCreated,
null,
source.Item1.ContainerItemId,
source.Item1.UserId,
Item2.Select(AuditItemMapper.Map).ToReadOnlyCollection()
);
}
しかし、 Item2.Select... 行が機能していないので、他にどのように書くべきかわかりません。何か案は?
編集: まず、Item2 行は source.Item2.Select であると想定されています。
また、各 Item2 は 1 つの auditItem にすぎず、コレクションに追加しようとしているため、ロジックが意味をなさないことにも気付きました。監査項目は次のようになります。
public Audit(string applicationToken, AuditKind auditKind, DateTime dateCreated, string containerName, string containerItemId, int userId, ICollection<AuditItem> auditItems)
{
m_applicationToken = applicationToken;
m_auditKind = auditKind;
m_dateCreated = dateCreated;
m_containerName = containerName;
m_containerItemId = containerItemId;
m_userId = userId;
m_auditItems = auditItems;
}
auditItem は次のとおりです。
public AuditItem(string name, string data, string oldData)
{
m_name = name;
m_data = data;
m_oldData = oldData;
}
しかし、私が持っている方法はうまくいかないことがわかります。タプルの個別の Item1 を取得し、対応する各 Item2 をコレクションに入れ、監査項目に入れる必要があります...