gpt4 book ai didi

nhibernate - NHibernate 3.3 中的映射继承

转载 作者:行者123 更新时间:2023-12-01 06:40:45 25 4
gpt4 key购买 nike

我有下面描述的继承:

public abstract class BaseEntity<TId> {....}

public abstract class ModelEntity : BaseEntity<Int32>{....}

public abstract class AuditableEntity : ModelEntity,IAuditable{....}

public class ApplicationUser : AuditableEntity{....}

public class SuperUser : ApplicationUser

我正在使用 NHibernate 3.3,我想为该继承创建映射
public abstract class ModelEntityMap<TEntity> : ClassMapping<TEntity>
where TEntity : ModelEntity
{...}

public class AuditableEntityMap<TEntity> : ModelEntityMap<TEntity> where TEntity : AuditableEntity
{ ...}

public class ApplicationUserMap : AuditableEntityMap<ApplicationUser>
{...}

public class SuperUserMap : JoinedSubclassMapping<SuperUser>{...}

当应用程序启动并尝试设置数据库时,它会引发以下异常:
SuperUser 的不明确映射 发现多个根实体 BaseEntity/ApplicationUser

可能的解决方案
-合并根实体的映射表示层次结构中的真正根
- 注入(inject)带有逻辑的 IModelInspector 以发现真正的根实体。

我正在使用具有相同继承的 Fluent nhibernate,并且使用定义为的 SuperUserMap 工作正常
公共(public)类 SuperUserMap : SubClassMap {...}

我是 Nhibernate 代码映射的新手,很困惑!

最佳答案

我相信有两种方法可以解决这个问题:
a) 使用鉴别器的概念来识别存储的类的类型,从而从数据库中检索正确的对象,在这种情况下,您的类被映射到具有所有列和鉴别器列的表。不知道这如何与多级继承一起工作,但这是你可以用谷歌搜索的东西。

b) 看看这篇关于他如何处理继承的帖子:http://fabiomaulo.blogspot.co.nz/2011/04/nhibernate-32-mapping-by-code_13.html你可能会有一些想法来解决你的问题。

关于nhibernate - NHibernate 3.3 中的映射继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10656007/

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