문제

지금, 나는 수동으로 정의하는 고전적인 유창한 nhibernate 스타일에서 프로젝트를 전환하고 있습니다. ClassMap 각 도메인 엔티티에 대해 자동 맵퍼가 매핑을 자동 생성하도록합니다. 그러나 나는 오래된 클래식 매핑과 일치하도록 자동 appings를 조정할 때까지 이미 클래식 스타일로 매핑 한 클래스를 계속 사용하고 싶습니다.

유일한 문제는 자동 맵퍼가 이미 클래식 유창한 nhibernate 스타일에 매핑 된 클래스를 때릴 때 유창한 nhibernate 충돌이 충돌한다는 것입니다.

여기 내 AutoPersistenceModel 설정 코드 :

_autoPersistenceModel = AutoMap.AssemblyOf<DomainEntity>();
_autoPersistenceModel.AddMappingsFromAssembly(typeof (PlayerPersistenceMap).Assembly);

_autoPersistenceModel.Alterations(x =>
                    x.Add<AutoMappingAlteration>())
                .Setup(s =>
                {
                    s.FindIdentity = type => type.Name == "ID";

                    s.IsBaseType = type => (type == typeof(DomainEntity));
                })
                .Conventions
                    .AddFromAssemblyOf<IdentityColumnConvention>()
                    .UseOverridesFromAssemblyOf<PlayerMappingOverride>();

누구든지 여기서 나를 도울 수 있습니까?

더 많은 정보:

나는 또한 유창한 nibernate wiki에 언급 된 기술을 시도했습니다. 여기. 아아 나는 여전히 오류를 받고 있습니다. Duplicate class/entity mapping.

도움이 되었습니까?

해결책

그만큼 혼합 유창한 매핑 및 자동 매핑 예제 위키에서는 작동하지 않으면 버그가 있습니다.

해결 방법으로 자동 앱에서 수동으로 매핑 된 유형을 제외하십시오. 당신은 그것을 사용하여 그렇게 할 것입니다 Where Wiki 예제에서 보여지는 방법 : 다음과 같은 방법.

AutoMap.AssemblyOf<DomainEntity>()
  .Where(type => type != typeof(OneOfYourManuallyMappedClasses));

유창한 매핑이 많으면 자동 캡처 설정을 깨끗하게 유지하는 컬렉션을 만들 수 있습니다.

var mappedTypes = new[] { typeof(One), typeof(Two) };

AutoMap.AssemblyOf<DomainEntity>()
  .Where(type => !mappedTypes.Contains(type));

다시 말하지만, 이것은 필요하지 않지만 Wiki 예제로 작동하지 않는다고 확신하면 문제를 제기하는 것이 좋습니다.

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