Search code examples
.netnhibernatefluent-nhibernate-mappingnhibernate-mapping-by-code

NHibernate - Force escaping on Table Names


Are there any good examples of how to use this (NHibernate.Criterion.IdentifierEqExpression) online? I couldn't find any. I'm a little confused about what you are supposed to pass into the constructor.

I pass in an int32 of 1 and I keep thinking my test should basically do a "where id = 1" type of query and instead it blows up with "where id = ?" and something about positional parameters. If that's not what is supposed to be passed into the constructor ... what is?

Real Issue
When I look at SQL output it seems to be working correctly except for the fact my table is named User and NHibernate isn't enclosing it like [User]. Any way to force this?


Solution

  • Specify the table name as `User`. For example:

    (HBM)
    <class name="User" table="`User`">
    
    (Fluent)
    public UserMap()
    {
        WithTable("`User`");
        ...
    
    (Mapping By Code)
    public UserMap()
    {
        Table("`User`");
        ...
    

    Similarly, with columns you'll have to do something like:

    Map(x => x.IsCurrent, "`Current`");
    

    Oh the joys of working with legacy DBs.