Я новичок в ColdFusion, и я пытался из ORM (Hibernate, я считаю, что я не знаю вообще)Одновременные запросы базы данных ColdFusion ORM неудачу
Я столкнулся с проблемой при попытке вызова двух CF страницы быстро. Код на двух страницах супер просто:
getAppointments.cfm:
<cfscript>
ORMReload();
appointments = serializeJSON(EntityLoad("Appointment"));
</cfscript>
<cfoutput>#appointments#</cfoutput>
getRooms.cfm:
<cfscript>
ORMReload();
rooms = serializeJSON(EntityLoad("Room"));
</cfscript>
<cfoutput>#rooms#</cfoutput>
код, который я использую, чтобы вызвать их в JQuery/AJAX:
var appointments;
var rooms;
$(document).ready(function() {
loadAppointments();
loadRooms();
});
function loadAppointments() {
$.ajax({
type: 'get',
url: 'getAppointments.cfm'
}).done(function (response) {
appointments = JSON.parse(response);
}).fail(function (response) {
var message = response.status + " - " + response.statusText;
alert("Failed to load appointments: " + message);
});
}
function loadRooms() {
$.ajax({
type: 'get',
url: 'getRooms.cfm'
}).done(function (jsonString) {
rooms = JSON.parse(jsonString);
}).fail(function (response) {
var message = response.status + " - " + response.statusText;
alert("Failed to load rooms: " + message);
})
}
Если я установил точку останова для приостановки выполнения до того, как вызывается loadRooms()
, все хорошо. Если я позволю коду работать прямо, я получаю ошибку 500, поэтому довольно очевидно, что я сталкиваюсь с проблемой параллелизма с ORM из-за асинхронного вызова AJAX.
Я запускаю CF на IIS (localhost) с базой данных SQL Server.
Ни один из учебников по CF, которые я видел, не охватывает такой сценарий. Я знаю, что могу отложить выполнение внутри JS-функций, но это только маскирует основную проблему.
Может ли кто-нибудь указать мне на решение? Есть ли что-то похожее на блокировку C#, доступную в CF?
Функция EntityLoad требует имя + критерии/идентификатор, пожалуйста, прочитайте больше об этом https://cfdocs.org/entityload – Sana
Спасибо, вынимая ORMReload, решили проблему! Я думал, что это необходимо, потому что все обучающие материалы, на которые я смотрел, включают его в верхней части каждой страницы, использующей ORM. Поэтому мне нужно только включить его, когда страница создает, обновляет или удаляет CFC, но не для чтения? –