내 도메인 로직에서 nhibernate 매핑 파일과 DB 구성을 어떻게 생성 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/812510

문제

프로젝트에서 도메인 객체에서 nhibernate를 구현하고 싶지만 매핑 파일과 데이터베이스를 어떻게 생성 해야하는지 잘 모르겠습니다.

나는 이것에 대해 다루는 몇 가지 질문을 발견했다 여기 그리고 여기, 그러나 나는 이미 정의 된 수업을 시작하고 있으며, 그들로부터 시작하여 다른 방법이 아니라 내 길을 따라 가고 싶습니다.

이것을 할 방법이 있습니까?

나는 다단계 과정으로 완벽하게 괜찮습니다. 나는 다른 사람들이 그들에게 성공한 일을 알고 싶습니다.

참고로 SQL Server 2005에 데이터베이스를 배포하고 싶습니다.

도움이 되었습니까?

해결책

매핑 정보 : 게리와 같은 유창한 매핑으로 매핑을 만들 수 있습니다. 매우 복잡하지 않은 도메인 모델이 있으면 fluentnhibernate의 컨벤션 기반 매핑 기능 인 Automapping을 사용할 수 있습니다.

 var sessionFactory = Fluently.Configure()  
   .Database(MsSqlConfiguration.MsSql2005  
     .ConnectionString(c => c  
       .Is(ApplicationConnectionString)))  
   .Mappings(m =>  
     m.AutoMappings.Add(AutoPersistenceModel.MapEntitiesFromAssemblyOf<Product>())  
   )  
   .BuildSessionFactory();

그리고 그게 당신이 필요한 전부입니다.

SchemaExport를 사용하여 데이터베이스를 빌드 할 수 있습니다.

var schemaExport = new SchemaExport(configuration);
schemaExport.Create(false,true);

다른 팁

좋아요 유창한-비버 네이트. 사용자 클래스를 매핑하려면 아래 예제를 참조하십시오. 물론 XML을 사용할 수 있습니다.

Lamda 표현식의 x 값은 도메인 클래스를 나타냅니다.

이것은 내가 좋아하는 ROR과 매우 흡사합니다.

public sealed class UserMap : ClassMap<User>, IMapGenerator
    {
        public UserMap()
        { 
            Id(x => x.Id)
                .WithUnsavedValue(0);
            Map(x => x.Username).TheColumnNameIs("UserName");
            Map(x => x.Password).TheColumnNameIs("Password");   
            Map(x => x.Salt).ReadOnly();

            Map(x => x.CreatedOn).ReadOnly();
            Map(x => x.CreatedBy).ReadOnly();
            Map(x => x.CreatedAt).ReadOnly();

            Map(x => x.ApprovalStatus)
                .TheColumnNameIs("ApprovalStatusId")
                .CustomTypeIs(typeof(ApprovalStatus));

            Map(x => x.DeletionStatus)
                .TheColumnNameIs("DeletionStatusId")
                .CustomTypeIs(typeof(DeletionStatus));

            References(x => x.Role).Not.Nullable();
            References(x => x.Contact);

        }

        #region IMapGenerator Members

        public System.Xml.XmlDocument Generate()
        {
            return CreateMapping(new MappingVisitor());
        }

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