从外部装配的Orchard CMS记录映射

时间:2015-01-24 17:48:03

标签: orchardcms nhibernate-mapping orchardcms-1.8

我有一个使用外部库的Orchard CMS模块。我需要使用该库中的一些类作为Orchard记录的一部分。 例如,外部程序集包含类

public class Operation {
    public virtual long Id { get; set; }
    public virtual string OperationType { get; set; } 
}

我必须将它存储在数据库中,以便与Orchard IRepository一起使用,并将其用作其他Orchard CMS记录的一部分,例如

public class HistoryRecord {    
    public virtual long Id { get; set; }
    public virtual DateTime Updated { get; set; }
    public virtual Operation Operation { get; set; }
}

1 个答案:

答案 0 :(得分:0)

我能够根据Fluet Configuration获得部分解决方案。但是,仅当类与Orchard的命名约定相对应时,它才有效。 这是:

public class SessionConfiguration : ISessionConfigurationEvents {
    public void Created(FluentConfiguration cfg, AutoPersistenceModel defaultModel) {
        var ts = new TypeSource(new[] { typeof(OperationRecord) });
        cfg.Mappings(m => m.AutoMappings.Add(AutoMap.Source(ts)
                .Override<OperationRecord>(mapping => mapping.Table("Custom_Module_OperationRecord"))
            ));
    }

    public void Prepared(FluentConfiguration cfg) { }
    public void Building(Configuration cfg) { }
    public void Finished(Configuration cfg) { }
    public void ComputingHash(Hash hash) { }
}


public class TypeSource : ITypeSource {
    private readonly IEnumerable<Type> _types;
    public TypeSource(IEnumerable<Type> types) {
        _types = types;
    }
    public IEnumerable<Type> GetTypes() {
        return _types;
    }
    public void LogSource(IDiagnosticLogger logger) {
        throw new NotImplementedException();
    }
    public string GetIdentifier() {
        throw new NotImplementedException();
    }
}