Domanda

Voglio implementare NHibernate sui miei oggetti di dominio nel mio progetto, ma non sono sicuro di come dovrei fare per generare il file di mappatura e il database.

Ho trovato alcune domande che toccano questo qui e qui , ma sto iniziando con il mio classi già definite, e vorrei iniziare da esse e scendere a fondo, non viceversa.

C'è un modo per farlo?

Sto perfettamente bene con un processo in più fasi, voglio solo sapere cosa hanno fatto le altre persone che hanno avuto successo per loro.

Cordiali saluti, voglio distribuire il database su SQL Server 2005.

È stato utile?

Soluzione

Informazioni sulla mappatura: Puoi creare la mappatura con la mappatura fluida come Gary. Quando si dispone di un modello di dominio molto semplice, è possibile utilizzare Automapping, una funzionalità di mappatura basata su convenzione di FluentNhibernate:

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

Ed è tutto ciò di cui hai bisogno.

Puoi costruire il tuo database con schemaexport:

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

Altri suggerimenti

Mi piace Fluent-NHibernate . Vedi l'esempio seguente per mappare una classe User, ovviamente puoi usare XML.

Il valore x nell'espressione lamda rappresenta la classe di dominio.

Questo è molto simile al RoR che mi piace molto

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
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top