【问题标题】:Fluent-NHibernate ICompositeUserType for Domain Entity Objects域实体对象的 Fluent-NHibernate ICompositeUserType
【发布时间】:2012-07-30 16:20:06
【问题描述】:

我有以下领域实体对象:

public class Report
{
    public virtual int Id { get; set; }
    public virtual int Score { get; set; }
    public virtual EntityType Type { get; set; }
    public virtual Object Entity { get; set; }
}

public class Category 
{ 
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

public class Topic
{ 
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

Report.Entity 可以是类别或主题。类型由 Report.Type 指示。 EntityType 是一个枚举。目标是能够使用 fluent-nhibernate 保存报告类。我相信我可以使用 ICompositeUserType 完成此操作,这将为我提供以下信息:

public class Report
{
    public virtual int Id { get; set; }
    public virtual int Score { get; set; }
    public virtual EntityCompositeUserType Entity { get; set; }
    public virtual EntityType Type { get; set; }
}

我的问题是:是否可以让 EntityCompositeUserType 类中的 NullSafeGet 方法返回域实体对象(类别或主题)?我见过的所有 ICompositeUserType 示例都从当前表中的列(在我的例子中,从报告表中的列)创建一个新对象。我看到有人提到使用多个表中的列,但没有看到它的实现。

【问题讨论】:

    标签: .net nhibernate fluent-nhibernate


    【解决方案1】:

    我建议

    public class Report
    {
        public virtual int Id { get; set; }
        public virtual int Score { get; set; }
        public virtual Entity Entity { get; set; }
    }
    
    public class Category : Entity
    { 
        public virtual string Name { get; set; }
    }
    
    public class Topic : Entity
    { 
        public virtual string Name { get; set; }
    }
    
    public class Entity
    { 
        public virtual int Id { get; set; }
    }
    
    public ReportMap()
    {
        ReferenceAny(x => x.Entity)...
            .EntityIdentifierColumn("entirtyid")
            .EntityTypeColumn("entitytype")
            .IdentityType<int>()
            .MetaType<string>()
            .AddMetaValue<Category>("category")
            .AddMetaValue<Topic>("topic");
    }
    

    【讨论】:

    • 谢谢,我还没有机会尝试这个,但它看起来很有希望。一旦我有机会实现它,我将链接回来。
    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 2011-02-02
    • 2011-10-26
    • 1970-01-01
    • 2010-10-06
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多