来自外部程序集的 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();
}
}
我有一个使用外部库的 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();
}
}