Fluent NHibernate ignorieren Immobilie innerhalb der ClassMap, mit FluentMappings

Bin ich mit NHibernate 3.1 und Fluent NHibernate als ORM in meinem Projekt. Ich brauche eine Eigenschaft von POCO ignoriert Fluent NHibernate. Auf den ersten, mein Beitrag Aussehen könnte, als exakte Kopie von diese Frage, ist es aber nicht.

Meine Komplikationen kommen zunächst aus der Tatsache, dass die POCOs definiert sind, in einer anderen assembly als die Zuordnung, und ich bin mit fluent-mappings für meine POCOs. Ich habe zusätzliche Anforderung nicht zu schreiben ingore-Eigenschaft code, wo die session-factory configuration " stattfindet (das passiert an einem zentralen Ort außerhalb der Module), sondern als Teil des Moduls definiert die Zuordnungen. Im Idealfall, glaube ich, der richtige Platz wäre die konkrete ClassMap Umsetzung, da er genau weiß, wie zu beschreiben, POCO-der ORM.

Aber ich bin stecken geblieben auf diese vor allem, denn dies ist meine erste Aufprall mit NHibernate und seine fluent-API. Bis jetzt bin ich mit ganz guten Eindruck von seinen Funktionen und Erweiterbarkeit, und ich hoffe es gibt einen Weg, um meinen Bedarf in einer Weise, dass die mapping-bezogenen code gekapselt wird im entsprechenden Modul.

Hier ist meine Konfiguration, die von einem zentralen Ort:

List<Assembly> assemblies = GetModules().Select(x => x.GetType().Assembly).ToList();

ISessionFactory nhibernateSessionFactory = Fluently
    .Configure()
    .Mappings(m => assemblies.ForEach(asm => m.FluentMappings.AddFromAssembly(asm)))
    .Database(
        MsSqlConfiguration.MsSql2005
            .ShowSql()
            .ConnectionString(DatabaseConfig.Instance.ConnectionString))
    .ExposeConfiguration(c => new SchemaUpdate(c).Execute(true, true))
    .BuildSessionFactory();

Verwende ich standard-Klasse Zuordnungen, die Erben von ClassMap:

public class User
{
    public virtual int ID { get; set; }
    public virtual String Username { get; set; }
    public virtual String Password { get; set; }
    public virtual DateTime DateCreated { get; set; }
    public virtual DateTime DateModified { get; set; }

    //Must ignore
    public string ComputedProperty  { get { ... } }
}

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Table("User");
        Id(x => x.ID).GeneratedBy.Identity();
        Map(m => m.Username).Not.Nullable().Length(255).UniqueKey("User_Username_Unique_Key");
        Map(m => m.Password).Not.Nullable().Length(255);
        Map(m => m.DateCreated).Not.Nullable();
        Map(m => m.DateModified).Not.Nullable();
    }
}
Schreibe einen Kommentar