エンティティをマッピングするために、命名規則を使用してコードで NHibernate マッピングを使用しています。今、私は次のエラーがあります
SQL error - Incorrect syntax near the keyword 'User'.:
私はこれが予約語であることを知っており、この名前 (ユーザー) を慣例によるマッピングでエンティティ名としてどのように使用できるのか疑問に思っています。
エンティティをマッピングするために、命名規則を使用してコードで NHibernate マッピングを使用しています。今、私は次のエラーがあります
SQL error - Incorrect syntax near the keyword 'User'.:
私はこれが予約語であることを知っており、この名前 (ユーザー) を慣例によるマッピングでエンティティ名としてどのように使用できるのか疑問に思っています。
これは SQL SERVER の予約済みキーワードであるため、角かっこで囲むことで使用できます。
[User]
この単語user
はSQL Serverの予約語です。列名として使用する必要がある場合は、括弧で囲みます。これは、たまたまキーワードと衝突するすべてのテーブル名およびその他のユーザー定義名に当てはまります。
例:
Select * from tbl where [User] = 'xyz'
NHibernate でこれを処理する正しい方法は、SQL Quoted Identifiersを使用することです。
テーブルまたは列の名前をバッククォートで囲むだけでDialect
、データベースに適した記号が使用されます。
物事を簡単にするために、NHibernate はこれを行う構成設定を提供します: hbm2ddl.keywords="auto-quote"
xml 構成ファイルで設定するか、AutoQuoteKeywords()
loquacious を使用するときに呼び出します。
角かっこが機能しない場合は、次のことを試してください。
"`User`"