Почему люди делают это так сложно.
Этого должно быть достаточно.
Не реализуйте onPostExecute в задаче async, скорее реализуйте его в Activity:
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState) {
//execute the async task
MyAsyncTask task = new MyAsyncTask(){
protected void onPostExecute(String result) {
//Do your thing
}
}
task.execute("Param");
}
}
Я видел это однажды, когда одна из моих моделей не была отображена правильно (не использовал nullable типы правильно). Можно ли вставить модель и отображение?
Я также столкнулся с этой проблемой в NH 2.0.1, когда пытался скрыть обратные концы пакетов «многие ко многим» с помощью access = "noop" (подсказка: это не работает).
Преобразование их в access = "field" + добавление поля в класс устранило проблему. Однако отследить их довольно сложно.
Всегда будьте осторожны с полями NULLable, когда имеете дело с NHibernate. Если ваше поле в БД имеет значение NULLable, убедитесь, что соответствующий класс .NET также использует тип Nullable. В противном случае произойдут самые разные странности. Обычно симптом заключается в том, что NHibernate будет пытаться обновить запись в БД, даже если вы не изменили никаких полей с тех пор, как прочитали объект из базы данных.
Следующая последовательность объясняет, почему это происходит:
Это не только снижает производительность (вы получаете дополнительный возврат к базе данных и дополнительное обновление каждый раз, когда вы извлекаете объект), но также может вызвать трудно устранить ошибки со столбцами DateTime. Действительно, когда свойство DateTime инициализируется значением по умолчанию, оно устанавливается на 1/1/0001. Когда это значение сохраняется в БД, SqlClient ADO.NET не может преобразовать его в допустимое значение SqlDateTime, так как минимально возможное значение SqlDateTime равно 1/1/1753 !!!
Самое простое исправление - заставить свойство класса использовать Nullable введите, в данном случае «DateTime?». В качестве альтернативы вы можете реализовать настраиваемый сопоставитель типов, реализуя IUserType с его методом Equals, правильно сравнивая DbNull.Value с любым значением по умолчанию вашего типа значения. В нашем случае Equals потребуется вернуть true при сравнении 1/1/0001 с DbNull.Value. Реализовать полнофункциональный IUserType на самом деле не так сложно, но для этого требуется знание мелочей NHibernate, поэтому приготовьтесь к существенному поиску в Google, если вы решите пойти по этому пути.
t преобразовать его в допустимое значение SqlDateTime, так как минимально возможное значение SqlDateTime равно 1/1/1753 !!!Самое простое исправление - заставить свойство класса использовать тип Nullable, в данном случае «DateTime?». В качестве альтернативы вы можете реализовать настраиваемый сопоставитель типов, реализуя IUserType с его методом Equals, правильно сравнивая DbNull.Value с любым значением по умолчанию вашего типа значения. В нашем случае Equals необходимо вернуть true при сравнении 1/1/0001 с DbNull.Value. Реализовать полнофункциональный IUserType на самом деле не так сложно, но для этого требуется знание мелочей NHibernate, поэтому приготовьтесь к существенному поиску в Google, если вы решите пойти по этому пути.
t преобразовать его в допустимое значение SqlDateTime, так как минимально возможное значение SqlDateTime равно 1/1/1753 !!!Самое простое исправление - заставить свойство класса использовать тип Nullable, в данном случае «DateTime?». В качестве альтернативы вы можете реализовать настраиваемый сопоставитель типов, реализовав IUserType с его методом Equals, правильно сравнивая DbNull.Value с любым значением по умолчанию для вашего типа значения. В нашем случае Equals необходимо вернуть true при сравнении 1/1/0001 с DbNull.Value. Реализовать полнофункциональный IUserType на самом деле не так сложно, но для этого требуется знание мелочей NHibernate, поэтому приготовьтесь к существенному поиску в Google, если вы решите пойти по этому пути.
вы можете реализовать настраиваемый сопоставитель типов, реализуя IUserType с его методом Equals, правильно сравнивая DbNull.Value с любым значением по умолчанию вашего типа значения. В нашем случае Equals необходимо вернуть true при сравнении 1/1/0001 с DbNull.Value. Реализовать полнофункциональный IUserType на самом деле не так сложно, но для этого требуется знание мелочей NHibernate, поэтому приготовьтесь к существенному поиску в Google, если вы решите пойти по этому пути. вы можете реализовать настраиваемый сопоставитель типов, реализуя IUserType с его методом Equals, правильно сравнивая DbNull.Value с любым значением по умолчанию вашего типа значения. В нашем случае Equals необходимо вернуть true при сравнении 1/1/0001 с DbNull.Value. Реализовать полнофункциональный IUserType на самом деле не так сложно, но для этого требуется знание мелочей NHibernate, поэтому приготовьтесь к существенному поиску в Google, если вы решите пойти по этому пути.