我是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] 删除。
我来说两句