私は 3 つのそよ風のエンティティを持っています。私のアプリケーションは、保存のためにサーバーに行く前に一度に 3 つのテーブルすべてにレコードを追加する長い形式です。Drivers & Vehicles テーブルの 2 つには AutoLead との関係があり、クライアント側で一度に入力されている AutoLead テーブルからの AutoLeadId が必要です。
ユーザーが AutoLead に情報を入力し、1 つのシームレスなフォームで Drivers テーブルと Vehicles テーブルにレコードを追加するフォームがあります。最初に保存を分離せずにドライバーと車両に割り当てる ID を取得するにはどうすればよいですか。最初に AutoLead を保存し、新しい ID を返し、それをドライバーと車両に割り当ててから再度保存します。Vehicles と Drivers のナビゲーション プロパティの Id を生成するためだけに、サーバーに何度もアクセスすることを避けたいと考えています。
私が理解したことから、そよ風は、作成したクライアント側からの一時 ID を使用して、これらの ID を修正できるはずでした。しかし、保存しようとすると、これらの ID は変更されません。によると:http://www.breezejs.com/documentation/navigation-properties
ナビゲーション プロパティをオブジェクトで直接設定しようとすると、ナビゲーション プロパティの未定義エラーが発生します (以下のコードを参照)。別のアプローチを使用して、外部キーを ID に直接設定しようとすると、サーバー (一時 ID) に -1 をプッシュしようとするため、SQL から外部キー エラーが発生します。私は何か間違ったことをしているに違いないことを知っています。これが私のコードの一部です:
新しいクライアント側エンティティを作成します。
// New entity creation functions
var createAutoLead = function() {
return manager.createEntity('AutoLead');
};
var createAutoLeadDriver = function () {
return manager.createEntity('AutoLeadDriver');
};
var createAutoLeadVehicle = function () {
return manager.createEntity('AutoLeadVehicle');
};
// Save Function Loop through all drivers and vehicles and set
their autoLeadId's before saving
var saveAutoLead = function (newAutoLead, autoLeadDrivers, autoLeadVehicles) {
// Loop through drivers and set the foreign keys
for (var i = 0; i < autoLeadDrivers().length; i++) {
autoLeadDrivers()[i].autoLead(newAutoLead);
}
// Loop through drivers and set the foreign keys
for (var i2 = 0; i2 < autoLeadVehicles().length; i2++) {
autoLeadVehicles()[i2].autoLead(newAutoLead);
}
manager.saveChanges()
.then(saveSucceeded)
.fail(saveFailed);
function saveSucceeded() {
return logger.log('Debug Message', 'Quote saved successfully', null, system.getModuleId(datacontext),
true, config.growlTypes.success);
}
return logger.log('Debug Message', 'Quote saved successfully', null, system.getModuleId(datacontext),true, config.growlTypes.success);
};