문제

nhibernate를 처음 접했을 때, 그것의 구성 측면은 항상 나에게 지나치게 번거로워 보였다. 어제, 나는 유창한 nhibernate의 자동 매핑 기능을 발견했고 적합하게 감동했습니다.

나 자신을 교육하기 위해 나는 '첫 번째 프로젝트 시작'을 시도하는 도전을 스스로 설정했다.http://wiki.fluentnhibernate.org/show/gettingstartedfirstproject) 자동 앱 및 컨벤션 사용. 나는 많은 운이 없다는 것을 인정해야합니다.

내 단계를 정리하기 위해 :

예제에서 데이터베이스 스키마를 약간 변경했는데, 주로 데이터베이스 이름 지정 표준에 더 많은 인라인을 가져 오기 때문에 주로 외래 키 (예 : Product_ID에서 ProductID에서 밑줄)에서 밑줄을 제거했습니다.

Q1) 나는 외국 keyconvention을 예로 사용하여 ihasmanyconvention 구현을 작성하려고 노력했지만 WithkeyColumn 메소드는 존재하지 않는 것 같습니다 (어제 빌드를 다운로드했기 때문에 기사가 작성된 이후 디자인이 변경 되었기 때문입니다). 이것을 어떻게 교정합니까?

또한이 예제에서 엔티티 레이어를 약간 변경했다고 생각했기 때문에 StoressTockedIn의 이름을 상점 (Product.CS) 및 직원에게 직원 (Store.cs)으로 바꾸는 것이 었습니다.

내 코드는 다음과 같습니다.

var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
    .ConnectionString(c => c
        .Is(connectionString)))
.Mappings(m => m.AutoMappings.Add(
                AutoPersistenceModel.MapEntitiesFromAssemblyOf<Store>()
                    .Where(t => t
                        .Namespace == "FluentNHibernateTesting.Entities")
                        .ConventionDiscovery.Setup(c => c.Add<ForeignKeyConvention>())
                ))
.BuildSessionFactory();

그런 다음 시작 예제에 따라 상점, 제품 및 직원을 데이터베이스에 추가하려고합니다. 내가 얻는 예외는 커밋에서 발생하며 다음과 같습니다.

객체 참조 구원받지 않은 과도 인스턴스 - 플러싱 전에 과도 인스턴스를 저장합니다. 유형 : fluentnhibernatesting.entities.employee, Entity : FluentNhibernateSting.entities.employee

Q2)이 문제를 어떻게 해결합니까? 나는 (제한된 독서에서) 객체 관계의 계단식 요소를 올바르게 설정하는 것과 관련이 있다는 것을 이해하지만, 자동 매핑을 사용하여 효과적으로이를 수행하는 방법에 대해 약간 혼란 스러웠습니다.

Q3) 유창한 프로젝트의 대상 릴리스 날짜가 있습니까? 나는 다른 많은 사람들을 가정하는 것처럼 이것이 훌륭한 이니셔티브라고 생각하지만 그것이 안정적인 상태가 아닌 한 그것을 사용하는 것을 염두에두고 있습니다.

Q4) 많은 블로그에서 HBN.XML과 유창한 기능의 패리티를 꾸준히 노력하고 있다고 언급했습니다. 이 도구의 평가 및 사용을 돕기 위해 이러한 누락 된 기능 목록이 있습니까?

미리 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

제임스 그레고리에게 이메일로 직접 이메일로 같은 질문을했습니다. 그는이 훌륭한 반응을 제공했습니다.

'이봐 폴,

1) KeyColumnNames는 당신이 추구하는 것입니다.

2) 3 가지 방법 중 하나를 할 수 있습니다. IHASMANYCONVENTION을 설정하여 전 세계적으로 모든 관계를 캐스케이드하거나, 호출에서 40 개의 분류를 사용하거나, 자동 캡처 재정의를 사용하십시오.

3) 우리는 현재 1.0 릴리스를 개인 테스트 중입니다. 우리가 공개 베타 버전을 가지고 있는지 또는 출시 할 것인지 확실하지 않지만 앞으로 몇 주 안에 일어날 것입니다.

4) 우리가 Nhibernate로 완전히 기능을 완성 할 가능성은 거의 없을 것입니다. 많은 NH 기능은 매우 난해하며이를 구현하는 데는 이점이 거의 없습니다. 1.0 기준으로 사람들이 정기적으로 사용하는 것을 지원하지 않는 기능은 거의 없습니다. 모든 일반적인 매핑 시나리오가 제공되었다고 자신있게 말할 수 있으며, 그렇지 않은 것이 있으면 해당 경우에 항상 HBM으로 돌아갈 수 있습니다.

우리의 문서가 구식이라는 의견을 선점하려면 문서화가 1.0에 대해 점검 될 것입니다.)

제임스

감사합니다. 제임스.

다른 팁

유창한 프로젝트의 대상 릴리스 날짜가 있습니까? 나는 다른 많은 사람들을 가정하는 것처럼 이것이 훌륭한 이니셔티브라고 생각하지만 그것이 안정적인 상태가 아닌 한 그것을 사용하는 것을 염두에두고 있습니다.

지금 SVN 저장소에서 유창한 NHibernate의 작동 버전을 얻을 수 있어야합니다. 그들은 또한 바이너리를 편집했습니다.

현재 유창한 nhibernate의 공식 릴리스가 없습니다. 이것은 품질을 반영하는 것이 아니라 빠른 변화율입니다. 우리의 코드베이스는 매일 업데이트되고있어 공식 릴리스를 제공하면 Nhibernate Core와 함께 기능 패리티를 달성 할 때까지 무의미한 노력이 발생합니다. 매일 사용하는 대부분의 일반 기능은 준비되었습니다.

http://fluentnhibernate.org/downloads

현재 문제는 다음과 같습니다.

http://code.google.com/p/fluent-nhibernate/issues/list

그들 중 누구도 거래 킬러가 아닌 것 같습니다. 나는 그것이 당신이 얼마나 많은 시간을 실험 해야하는지에 달려 있다고 생각합니다.

객체 참조 구원받지 않은 과도 인스턴스 - 플러싱 전에 과도 인스턴스를 저장합니다. 유형 : fluentnhibernatesting.entities.employee, Entity : FluentNhibernateSting.entities.employee

Google이라면 객체 참조 구원받지 않은 과도 인스턴스, 당신은 이것에 대해 몇 가지 일치를 찾을 것입니다. 가장 좋은 방법은 이러한 문제를 해결하고 문제 해결을 시작하는 것입니다. 일화 적으로, 내가 읽은 내용에서 오류 메시지가 정확히 말하는 것처럼 들리거나 업데이트되지 않는 많은 마니 또는 계단식 관계가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top