我是coldfusion的新手,我正在尝试ORM(Hibernate,我相信,我根本不知道)
我试图快速连续调用两个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错误,所以很明显我因为AJAX调用的异步特性而遇到ORM的某种并发问题。
我在IIS(localhost)上运行CF,带有SQL Server数据库。
我见过的关于CF的教程都没有涵盖这种情况。我知道我可以在JS函数中推迟执行,但这只会掩盖底层问题。
有人能指出我的解决方案吗? CF中是否有类似于C#锁的东西?