Nhibernate
은 순수한 SQL 만 생성해야하는데,이 SQL을 C 함수에 보내야합니다.DB에 연결하지 않고 NHibernate를 사용하는 방법이 있습니까?
답변
사용자 정의 드라이버
NHibernate.Driver.IDriver
을 구현하여 C 층을 호출하는 드라이버를 구축 할 수 있습니다.
SQLite 드라이버는 C 라이브러리이므로 시작하는 것이 좋습니다. IDriver는 SQLiteDriver와 거의 동일합니다. NHibernate source code이 유용 할 것이다.
또한 C 라이브러리에 대한 IDbConnection 래퍼가 필요합니다. SQLite 래퍼 중 csharp-sqlite이 가장 작은 소스를 가지고 있으므로 도움이 될 것입니다.
ODBC를
NHibenate 이미 ODBC 연결, NHibernate.Driver.OdbcDriver
에 대한 드라이버를 가지고있다.
이 작업을 수행하는 간단한 방법은 없습니다. 이론적으로 NHibernate는 SQL을 전혀 생성 할 필요가 없다. 방금 방언이 일어나는 것입니다 (예를 들어, 텍스트 파일이 데이터 저장소로있을 수 있습니다). 인터페이스는 추상화 장벽을 깨기 때문에 SQL을 노출하지 않습니다.
그러나 show_sql 옵션을 사용하면 NHibernate가 SQL을 기록하므로이를 사용할 수 있습니다. 내가 생각할 수있는 유일한 방법은 더미 데이터베이스를 설정하고 그에 대한 NH 쿼리를 실행하는 것입니다. SQL을 캡처하여 변수에 저장하기 위해 사용자 정의 log4net appender를 빌드하십시오. 이제이를 쿼리와 연결할 수 있습니다. 그래서 당신은 다음과 같은 것을 가질 것입니다
RunQueryAndCaptureSql(session.CreateQuery("from Stuff s where s.Thing = 'dude'"));
어떤 appender가 SQL을 추가하기를 기다리고 블록을 반환합니다. 지옥 같은 분별없는 당신은 스레딩 문제를 다루어야하지만 작동해야합니다.
솔직히 말해서, 아마 NH 소스를 해킹했을 것입니다.
- 1. DB에 연결하지 않고 mysql_real_escape_string에 대한 대안
- 2. 와이파이 P2P를 네트워크에 연결하지 않고
- 3. Java : 연결하지 않고 명령문 준비
- 4. http 서버에 연결하지 않고 연결 라우터를 사용하는 방법은 무엇입니까?
- 5. 정적으로 라이브러리에 연결하지 않고 COM 인터페이스를 사용하십시오.
- 6. nHibernate를 사용하는 MVC3
- 7. NHibernate를 사용하는 이유는 무엇입니까?
- 8. NHibernate를 사용하는 중 오류
- 9. NHibernate 세션을 사용하여 db에 변경 사항을 기록해야하는지 파악하는 방법이 있습니까?
- 10. Linq 클래스의 인스턴스를 데이터베이스에 연결하지 않고
- 11. 인라인 sql을 실행하여 nHibernate를 사용하는 테이블을 업데이트하십시오.
- 12. IBOutlet을 연결하지 않고 UILabel 텍스트 채우기
- 13. 장치를 연결하지 않고 직렬 포트에 쓸 수 있습니까?
- 14. 서버에 연결하지 않고 perl에서 mysql 데이터베이스를 생성 할 수 있습니까?
- 15. C#에서 제네릭 형식 매개 변수를 연결하지 않아도되는 방법이 있습니까?
- 16. 가끔씩 서버에 연결하지 않고 장치에서 보안 인증
- 17. 연결하지 않고 슬롯 메서드를 호출 하시겠습니까?
- 18. 하나의 프로세스에 여러 타이머 (rt에 연결하지 않고)
- 19. 나는 데이터베이스에 연결하지 않고 스크립트를 열 때
- 20. blogengine 및 mysql .net 커넥터 - db에 연결하지 못했습니다.
- 21. NHibernate를 사용하는 조인에서 subselect 사용
- 22. 분산 아키텍처에서 NHibernate를 사용하는 방법?
- 23. rubygems를로드하지 않고 ruby1.9를 호출하는 방법이 있습니까?
- 24. Django : DB에 저장하지 않고 관련 집합에 개체 추가
- 25. 간단한 C++ 또는 proc을 사용하지 않고 oracle db에 연결할 방법이 있습니까
- 26. sun.jdbc.odbc.JdbcOdbcDriver를 사용하는 다른 방법이 있습니까?
- 27. Flex에서 OpenLayers를 사용하는 방법이 있습니까?
- 28. Java에서 SenseRelate를 사용하는 방법이 있습니까?
- 29. USB 케이블을 다시 연결하지 않고 adb 연결을 다시 연결하는 방법
- 30. 개발 중에 연결하지 않고 ASP.NET 사이트에서 MySQL 데이터베이스를 사용하는 방법은 무엇입니까?
왜이 작업을 수행 하시겠습니까? –
우리 회사에는 데이터베이스 액세스를위한 C 계층이 있습니다. 모든 개발자 (.NET, Java, Cobol 및 Delphi)는이 계층을 사용해야합니다. 지금은 DAL을 사용하고 있지만 NHibernate를 사용하고 싶습니다. –
이 C 계층은 ADO.NET의 * 대신 * 사용됩니까? 또는 그것은 어디에 적합합니까? –