NHibernate/FluentNHibernate를 처음 사용합니다. 지금 사용하는 것이 더 쉽기 때문에 FNH를 코딩에 사용합니다. 그러나, 나는 NHibernate로 작성된 기존의 코드베이스로 작업하고있다. 오늘 데이터베이스가 예상대로 업데이트되지 않는 버그가 발견되었습니다. 약 30 분 후에 새로운 클래스 변수를 추가 했더라도 매핑 XML을 업데이트하지 않았다는 것을 알았습니다. 테이블의 행이 업데이트되지 않도록했습니다. 내 질문에, NHibernate와 같은 불완전한 매핑을 쉽게 식별 할 수있는 방법이 있는가? 그래서 내가 잘못되었을 때 매핑을 수동으로 검사 할 필요가 없다. 즉, 매핑되지 않은 필드에 대해 기본 데이터가 아닌 개체를 업데이트하는 경우 경고 메시지가 표시됩니까?NHibernate 불완전한 매핑을 막는 법
답변
는 FluentNHibernate에 PersistenceSpecification 클래스를 살펴 보자 : http://wiki.fluentnhibernate.org/Persistence_specification_testing
당신은 그 시스템에 의미가있는 경우 모든 속성을 테스트하는 반사를 사용하여이 작업을 마무리 할 수있다.
또한 UnitTest에서 NHibernate 매핑 메타 데이터를 사용하고 매핑되지 않은 속성을 리플렉션을 통해 검색 할 수 있습니다.
유창한 nhibernate 또는 다른 방법을 사용하여 nhibernate 매핑을 만드는 경우 Metatdata를 사용하면 응용 프로그램에 투명 해집니다.
UnitTests에서 매핑을 테스트하면 매핑이 제대로 된 경우 응용 프로그램을 시작하지 않을 때 테스트 중에 알 수 있습니다.
This question과 관련이 있고 this shows how to query the metadata 인 것으로 보입니다.
+1 나는이 스타일의 단위 테스트를 작성했지만 정확한 결과는 아닙니다. – Bevan
데이터베이스가 업데이트되지 않은 버그는 매핑 된 필드/속성 이외의 문제로 인해 발생할 수 있습니다. 리플렉션을 사용하여 잡을 수없는 다른 매핑 실수가있을 수 있습니다. 잘못된 계단식 또는 잘못된 발전기를 사용하면 어떨까요? 또는 연관 매핑을 잊어 버렸습니까?
대부분의 매핑 문제를 파악하려면 실제 또는 메모리 데이터베이스에 대해 실행되는 통합 테스트를 만들어야합니다. 이 방법의 개요는 here입니다.
- 1. PersistenceSpecification으로 NHibernate 매핑을 테스트하기
- 2. php : $ _POST에서 SQL injection을 막는 법
- 3. jqueryUI Css 위젯, 자손을 막는 법
- 4. NHibernate 매핑을 디버깅하는 방법은 무엇입니까?
- 5. NBuilder를 사용하여 NHibernate 매핑을 테스트하기
- 6. Fluent NHibernate 매핑을 생성하는 도구
- 7. 런타임에 nHibernate 매핑을 추가 하시겠습니까?
- 8. 코드에 의한 매핑을 사용하는 프로퍼티의 맵핑을 무시하는 법 "규약"
- 9. 다중 삽입을 막는 NHibernate 세션/트랜잭션
- 10. nhibernate 속성 매핑을 사용하려면 특별한 dll이 필요합니까?
- 11. NHibernate 매핑을 수행하는 가장 생산적인 방법은 무엇입니까?
- 12. NHibernate 용 Fluent 및 XML 매핑을 결합하십시오.
- 13. 유창한 nhibernate 매핑을 이용한 지속성 사양 테스트
- 14. http.modules에서 nhibernate 성 Windsor 매핑을 등록하지 않았습니다.
- 15. Fluent NHibernate : 원형 일대일 매핑을 만드는 방법?
- 16. Fluent NHibernate : 일대일 양방향 매핑을 만드는 방법?
- 17. 디폴트의 Fluent NHibernate 컬럼 매핑을 오버라이드
- 18. SQL Server NHibernate - int 매핑을 열거
- 19. Fluent NHibernate 매핑을 NHibernate로 변환하는 방법 내장형 코드 기반 매핑
- 20. NHibernate 3.2 (loquacious)와 bycode 매핑을 사용하여 postgres에 레코드 삽입하기
- 21. Fluent NHibernate AutoMapper에서 접근 가능성에 의한 속성 매핑을 무시합니다.
- 22. 제발이 단순한 유창한 nhibernate 매핑을 생활에 가져 오도록 도와주세요.
- 23. Fluent NHibernate 매핑을 설정하여 INSERT 만 허용 하시겠습니까?
- 24. Fluent Nhibernate : 기본 데이터베이스에 따라 필드 매핑을 변경하는 방법은 무엇입니까?
- 25. 고정 : 외부 어셈블리에서 NHibernate 매핑을 로딩하면 예외가 발생합니다.
- 26. 유창한 nHibernate 자동 매핑을 사용하는 등록 정보 필터
- 27. 코드로 Nhibernate 3.2 매핑을 사용하여 필터 정의를 추가하는 방법은 무엇입니까?
- 28. NHibernate 기존 데이터베이스와 디자이너를 사용하지 않는 매핑을 만들려면
- 29. 은 도메인 객체와 다른 어셈블리에서 NHibernate 매핑을 정의합니다.
- 30. 원본 매핑을 변경하지 않고 확장 개체에 대한 Nhibernate 질문
새로운 단위 테스트를 구현 하시겠습니까? – Rippo