来自外部程序集的 Orchard CMS 记录映射

Orchard CMS record mapping from external Assembly

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

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; }
}

我能够根据 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();
    }
}