새로운 기능 NHibernate에 새로 추가 된 NHibernate의 구성 측면은 항상 나에게 지나치게 부담스러워 보였다. 어제, 나는 Fluent NHibernate의 Auto Mapping 기능을 보았고 적절하게 감명 받았다.Fluent NHibernate. Auto Mapping and Conventions
나는 스스로를 교육하기 위해 자동 매핑 및 규칙을 사용하여 'Getting First Project'(http://wiki.fluentnhibernate.org/show/GettingStartedFirstProject)를 시도하는 도전 과제를 설정했습니다. 나는 운이별로 없다는 것을 인정해야합니다.
내 단계를 summise하려면 내가 예에서 데이터베이스 스키마에 약간의 변경을 주로 외래 키에서 밑줄을 제거하기 위해 (즉, 제품 일련 PRODUCT_ID)이 등이 함께 더 많은 인라인을 가져다 줄 우리의 데이터베이스 명명 표준.Q1) 예를 들어 ForeignKeyConvention를 사용하여 IHasManyConvention 구현을 작성하려고 시도했지만 WithKeyColumn 메서드가 존재하지 않는 것처럼 보입니다. (기사를 작성한 이후 디자인이 변경되어서 yesterdays 빌드를 다운로드했기 때문입니다.) 어떻게 수정합니까?
예에서 Entities 레이어를 약간 변경했는데 StoresStockedIn을 Stores (Product.cs)로 변경하고 Staff를 Employees (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();
그때 시도하고 시작하기 예에 따라 데이터베이스에 저장, 제품 및 직원을 추가 할 수 있습니다. 예외가 나는 커밋에 일어나고 :
개체는 저장되지 않은 일시적인 인스턴스를 참조합니다 - 플러시하기 전에 임시 인스턴스를 저장합니다. 유형 : FluentNibernateTesting.Entities.Employee, Entity : FluentNibernateTesting.Entities.Employee
Q2)이 문제를 어떻게 해결할 수 있습니까? 필자는 (제한된 독서에서) 객체 관계의 캐스케이드 요소를 올바르게 설정하는 것과 관련이 있다고하지만, 자동 매핑을 사용하여 효과적으로이 문제를 해결하는 방법에 대해서는 다소 혼란 스럽습니다.
Q3) Fluent 프로젝트의 출시일이 있습니까? 나는 (내가 다른 많은 사람들처럼 생각하기에) 이것이 훌륭한 이니셔티브라고 생각하지만 그것이 안정된 상태에 있지 않는 한 그것을 사용하는 것을 염두에 둔다.
Q4) 많은 블로그에서 hbn.xml로 Fluent 기능의 패리티를 향해 꾸준히 노력하고 있다고 언급했습니다. 이 도구의 평가 및 사용을 돕기 위해 누락 된 기능 목록이 있습니까?
미리 감사드립니다.