トランザクションとリンクされたエンティティで問題が発生しました。私はこのようなコードを持っています(実際のコードではなく、アイデアを得るために):
User *user = [User new];
user.username = "test";
[user commit];
user = [[[User query]where:@"username = \"test\""]fetch][0];
Session *session = [Session new];
session.user = user;
[session commit];
session = [[[Session query]whereWithFormat:@"user = %@", user.Id]fetch][0];
Config *config = [Config new];
config.user = user;
[config commit];
config = [[[Config query]whereWithFormat:@"user = %@", user.Id]fetch][0];
このスキームを使用してトランザクションなしでコーディングすると、正常に機能します。しかし、トランザクションでこれを実行しようとするとすぐに、セッションと構成でリンクされていないユーザー オブジェクトになってしまいます (トランザクション内のクエリでは、以前にコミットされたオブジェクトが見つかりません)。ドキュメントからわかるように、コミットはトランザクションコミットではなく、挿入または更新のいずれかです。
このような操作 (複数のエンティティの作成とリンク) を取得して、DBAccess を使用してトランザクション内で動作させる方法はありますか?
ありがとう、
マイク