4

私が取り組んでいるレガシー データベースのテーブルの 1 つに、「Order」という名前の列があることがわかりました。残念ながら、DB 構造を変更することはできません。
私のFluent NHibernateクラスは次のようになります

 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");
    }
}

問題が FluentNH なのか NHibernate 自体なのかはわかりませんが、「Order」の予約名に問題があることは確認できます。

これを解決するには?

更新: [注文] フォームに入力するように提案されました。ありがとう!
しかし、今は SQL2005 にしかリンクしていませんか?

4

2 に答える 2

5

Order をバックティックに入れてみてください: FluentNH は実行時に HBM ファイルを生成しているので、問題は解決するはずです。

于 2009-01-27T17:39:55.520 に答える
2

舞台裏のデータベースは何ですか?

MS SQL では、「注文」フィールドを角かっこで囲むことでこれを修正できるはずです。

Map(x => x.SiteOrder, "[Order]");

編集: 角括弧は、MS Access だけでなく、MS SQL のすべてのバージョンで機能するはずです。他のプラットフォームについては不明ですが、他のプラットフォームでも動作する可能性があります。

于 2009-01-27T17:41:08.060 に答える