问题
I discovered that one of the tables of a legacy db I'm working on has a colum named "Order".
Unfortunately I cannot change the DB structure.
My Fluent NHibernate class looks like
public class SiteMap : AutoMap<Site>
{
public SiteMap() {
WithTable("Sites");
Id(x => x.ID, "Id")
.WithUnsavedValue(0)
.GeneratedBy.Identity();
Map(x => x.Name, "Name");
//various columns mapping and then...
Map(x => x.SiteOrder, "Order");
}
}
I do not know if the problems is FluentNH or NHibernate itself but I can confirm that the problem lies in the "Order" reserved name.
How to solve this?
Update: as suggested putting in the form [Order] worked. Thanks!
But now I'm linked only to SQL2005?
回答1:
Try putting Order in back ticks: ``Order. Since FluentNH is generating HBM files at runtime I imagine that should fix the problem.
回答2:
What's the database behind the scenes?
With MS SQL, you should be able to fix this by surrounding the "Order" field with square brackets
Map(x => x.SiteOrder, "[Order]");
Edit: square brackets should work in all version of MS SQL, as well as MS Access. Not sure about other platforms, but its likely to work in some others, too.
来源:https://stackoverflow.com/questions/484381/db-column-named-order-with-fluent-nhibernate