并发Coldfusion ORM数据库请求失败

弗劳克

我是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错误,因此很明显,由于AJAX调用的异步特性,我正在遇到ORM的某种并发问题。

我在带有SQL Server数据库的IIS(localhost)上运行CF。

我所见过的CF教程都没有涉及这种情况。我知道我可以推迟JS函数内部的执行,但这只会掩盖潜在的问题。

有人可以指出我的解决方案吗?CF中是否有类似于C#锁的东西?

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

请阅读有关ORMReload()的信息,每当您对实体CFC进行更改时,它仅应使用一次。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章