我有一个像这样定义的抽象实体基类:public abstract class SessionItem : Entity{ public virtual Session Session { get; set; }}此外,我正在使用自动映射:private AutoPersistenceModel CreateAutomappings(){ return AutoMap // configuration .Conventions.Add(DefaultCascade.All()) // more configuration}SessionItem 有几个派生类/表,我想覆盖所有这些类/表的级联策略。我尝试了以下方法:public class SessionItemAutommapingOverride : IAutoMappingOverride<SessionItem>{ public void Override(AutoMapping<SessionItem> mapping) { mapping.References(x => x.Session).Cascade.None(); }}但不幸的是,没有调用覆盖,因为 SessionItem 是抽象的(并且没有映射)。我更喜欢避免为每个子类覆盖它(使用 IAutoMappingOverride)。有什么方法可以覆盖多种类型的级联,而无需为每个类型使用 IAutoMappingOverride? 最佳答案 public class SessionReferenceCascadeNone : IReferenceConvention, IReferenceConventionAcceptance{ public void Accept(IAcceptanceCriteria<IManyToOneInspector> criteria) { criteria.Expect(x => typeof(SessionItem).IsAssignableFrom(x.EntityType) && x.Property.PropertyType == typeof(Session)); } public void Apply(IManyToOneInstance instance) { instance.Cascade.None(); }}关于nhibernate - 一次覆盖多种类型的 Fluent NHibernate 默认级联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8819056/
10-13 07:51