2017-02-23 1 views
0

Ich bin neu zu Coldfusion und ich versuche, um den ORM (Hibernate, ich glaube, das weiß ich nicht)Concurrent Coldfusion ORM Datenbank-Anfragen scheitern

ich auf ein Problem kam bei dem Versuch, zwei zu nennen CF-Seiten in schneller Folge. Der Code auf den beiden Seiten ist super einfach:

getAppointments.cfm:

<cfscript> 
    ORMReload(); 
    appointments = serializeJSON(EntityLoad("Appointment")); 
</cfscript> 

<cfoutput>#appointments#</cfoutput> 

getRooms.cfm:

<cfscript> 
    ORMReload(); 
    rooms = serializeJSON(EntityLoad("Room")); 
</cfscript> 

<cfoutput>#rooms#</cfoutput> 

Der Code, den ich nenne sie verwenden, um jQuery/AJAX:

Wenn ich einen Breakpoint setze, um die Ausführung zu unterbrechen, bevor loadRooms() aufgerufen wird, ist alles in Ordnung. Wenn ich den Code direkt durchgehen lasse, bekomme ich einen Fehler von 500, daher ist es ziemlich offensichtlich, dass ich aufgrund der asynchronen Art der AJAX-Aufrufe in eine Art Parallelitätsproblem mit dem ORM stoße.

Ich führe CF auf IIS (localhost), mit einer SQL Server-Datenbank.

Keine der Tutorials auf CF, die ich gesehen habe, deckt diese Art von Szenario ab. Ich weiß, dass ich die Ausführung innerhalb der JS-Funktionen verzögern könnte, aber das würde nur das zugrunde liegende Problem maskieren.

Kann mir jemand eine Lösung vorschlagen? Gibt es etwas Ähnliches wie ein in CF verfügbares C# -Sperrschloss?

Antwort

1

Sie bewerben sich ORMReload() bei jedem Aufruf, der alle Einheiten neu geladen verursacht, klar orm Cache usw.

Bitte lesen Sie über ORMReload(), sollte es nur einmal verwendet werden, wenn Sie Änderungen in Ihrem Unternehmen machen FCKW.

+0

EntityLoad Funktion erfordert Name + Kriterien/ID, lesen Sie bitte mehr darüber https://cfdocs.org/entityload – Sana

+0

Danke, ORMReload herausnehmen löste das Problem! Ich dachte, es wäre notwendig, weil alle Tutorials, die ich mir angeschaut habe, es oben auf jeder Seite, die das ORM verwendet, einfügen. Ich muss es also nur einfügen, wenn eine Seite den CFC erstellt, aktualisiert oder löscht, aber nicht gelesen wird? –