Имя столбца с "?" - Как отобразить карту в NHibernate - PullRequest
1 голос
/ 24 ноября 2011

У меня есть устаревшая база данных MSaccess с одним из столбцов с именем «Active?».Я использую NHibernate, и я попытался сопоставить его следующим образом:

Property<bool?>(x => x.Active, map => map.Column("Active?"));

Также я попытался использовать обратные пометки:

Property<bool?>(x => x.Active, map => map.Column("`Active?`"));

Но я не могу успешно отобразить вышеупомянутый столбецимя -

Я всегда получаю эту ошибку:

{"Nullable object must have a value."}

Stack Trace:   
  at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
  at System.Nullable`1.get_Value()
  at NHibernate.Driver.DriverBase.ExpandQueryParameters(IDbCommand cmd, 
      SqlString sqlString)
  at NHibernate.AdoNet.AbstractBatcher.ExpandQueryParameters(IDbCommand cmd, 
      SqlString sqlString)
  at NHibernate.Loader.Loader.PrepareQueryCommand(QueryParameters queryParameters,
      Boolean scroll, ISessionImplementor session)
  at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters
      queryParameters, Boolean returnProxies)
  at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(
      ISessionImplementor session, QueryParameters queryParameters, Boolean 
      returnProxies)
  at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters
      queryParameters)

1 Ответ

2 голосов
/ 13 декабря 2011

Я предполагаю, что вы не можете изменить структуру таблицы исходной базы данных (что было бы идеально, но может нарушить другой код)

Я вижу один способ обойти это, с небольшим изменением в зависимости от того, насколько заблокирован оригинал.

Создание запроса MS Access в БД на основе исходной таблицы и псевдонима «Активный?» что-то вменяемое.

select foo, bar, [Active?] as Active
from insane_table

Вы должны иметь возможность обрабатывать объект MS Access Query как таблицу, если это не сложно.

Если вы действительно не можете прикоснуться к исходной БД вообще, я бы создал вторую БД MS Access и связал бы ее с таблицей в исходной БД (Файл -> Внешние данные -> Таблицы ссылок в более старой версии). - создать запрос в новой БД, который выполняет тот же трюк с псевдонимами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...