Ik ben wat dingetjes aan het uitproberen met NHibernate. Ik gebruik hiervoor C# 2.0 en SQL Server 2005. Ik heb een klasse FiscalYear die onder andere een property End heeft. Het probleem is dat deze niet geëscaped wordt in de queries die NHibernate uitvoert, waardoor ik steeds een NHibernate.ADOException krijg met als InnerException een SqlClient.SqlException met als Message: "Incorrect syntax near the keyword 'End'."
Ik stel mijn dialect in in mijn App.config als volgt:
Volgens de documentatie moet de dialect de fields escapen:
De oplossing om de brackets hard in de mapping file te zetten vind ik geen mooie oplossing, ik zou graag hebben dat de dialect doet wat het hoort te doen. Iemand enig idee wat de oorzaak en eventueel de oplossing van dit probleem is?
Ik stel mijn dialect in in mijn App.config als volgt:
XML:
1
| <add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect"/> |
Volgens de documentatie moet de dialect de fields escapen:
De query die NHibernate uitvoert is:You may force NHibernate to quote an identifier in the generated SQL by enclosing the table or column name in backticks in the mapping document. NHibernate will use the correct quotation style for the SQL Dialect (usually double quotes, but brackets for SQL Server and backticks for MySQL).
code:
1
2
3
4
5
6
7
8
| NHibernate: SELECT dossier0_.UserId as UserId1_, dossier0_.Name as Name1_, dossier0_.DateEnded as DateEnded1_, dossier0_.DateCreated as DateCrea7_1_, dossier0_.DefaultFiscalYearStart as DefaultF6_1_, fiscalyear1_.UserId as UserId0_, fiscalyear1_.DossierId as DossierId0_, fiscalyear1_.Start as Start0_, fiscalyear1_.[b]End[/b] as End0_ FROM Dossiers dossier0_ left outer join Dossiers fiscalyear1_ on dossier0_.UserId=fiscalyear1_.UserId WHERE dossier0_.UserId=@p0 @p0 = '1' |
De oplossing om de brackets hard in de mapping file te zetten vind ik geen mooie oplossing, ik zou graag hebben dat de dialect doet wat het hoort te doen. Iemand enig idee wat de oorzaak en eventueel de oplossing van dit probleem is?
[ Voor 6% gewijzigd door dingstje op 05-09-2006 23:02 ]
If you can't beat them, try harder