并发 coldfusion ORM 数据库请求失败

Concurrent coldfusion ORM database requests fail

我是 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 来电。

我在 IIS(本地主机)上 运行ning CF,有一个 SQL 服务器数据库。

None 我看过的关于 CF 的教程都涵盖了这种情况。我知道我可以在 JS 函数中延迟执行,但这只会掩盖潜在的问题。

任何人都可以指出我的解决方案吗? CF 中有类似 C# 锁的东西吗?

您在每次调用时应用 ORMReload(),这会导致重新加载所有实体、清除 orm 缓存等。

请阅读有关 ORMReload() 的信息,只要您在实体 CFC 中进行更改,就应该只使用一次。