gpt4 book ai didi

nhibernate - 使用 FluentNHibernate 映射通用 EntityBase

转载 作者:行者123 更新时间:2023-12-03 22:36:18 27 4
gpt4 key购买 nike

我的所有实体类型都有一个基类,就像

public abstract class EntityBase<TEntityType> : IEntityBase where TEntityType : EntityBase<TEntityType>
{
private List<IBusinessRule> _brokenRules = new List<IBusinessRule>();

private int? _hashCode;

public int ID { private set; get; }

在我的映射中,我想使用一个类一个表的策略,但是如何映射这个 EntityBase 类?我试过 public class EntityBaseMap:ClassMap 但它不起作用。那么我该如何映射这个类呢?我想要那个的原因是我不想用 Id(c=c.ID).Not.Null .... 等编写重复的东西,而是将它放在一个映射类中。

我的映射类是这样的

public class EntityBaseMap : ClassMap<EntityBase<???>>

我应该插入什么而不是 ???

谢谢

最佳答案

您仍然可以通过创建泛型映射然后使用运行时类型而不是创建静态类型来通过反射简化过程:

    private static void AddWeakReferenceMappings(FluentMappingsContainer container, Assembly assembly)
{
var genericMappingType = typeof (WeakReferenceMap<>);
var entityTypes = assembly.GetTypes().Where(type => type.IsSubclassOf(typeof (Entity)));
foreach (var enitityType in entityTypes)
{
var newType = genericMappingType.MakeGenericType(enitityType);
container.Add(newType);
}
}

关于nhibernate - 使用 FluentNHibernate 映射通用 EntityBase<TEntity> 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9631384/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com