需要FluentNHibernate映射语法帮助

时间:2011-01-25 04:24:21

标签: nhibernate fluent-nhibernate

我在为以下数据模型和域对象找出适当的FluentNHibernate映射语法时遇到了一些麻烦。这是我正在反对的数据模型: enter image description here

我正在尝试将以下域对象映射到该模型:

namespace FluentNHibernateSandbox.Entities
{
    public abstract class EntityBase
    {
        public virtual long Id { get; set; }
    }
}

namespace FluentNHibernateSandbox.Entities
{
    public class Attribute : EntityBase
    {
        public virtual string Name { get; set; }
        public virtual string Label { get; set; }
        public virtual string Description { get; set; }
        public virtual int SortOrder { get; set; }
        public virtual Group Group { get; set; }
        public virtual Editor Editor { get; set; }
    }
}

namespace FluentNHibernateSandbox.Entities
{
    public class Group : EntityBase
    {
        public virtual string Name { get; set; }
        public virtual string Label { get; set; }
        public virtual string Description { get; set; }
        public virtual int SortOrder { get; set; }
        public virtual IList<Attribute> Attributes { get; set; }
    }
}

namespace FluentNHibernateSandbox.Entities
{
    public class Editor : EntityBase
    {
        public virtual string ViewName { get; set; }
        public virtual string WorkerClassName { get; set; }
    }
}

一般来说,我最终想要的似乎并不是那么难以做到,但是在我尝试了几乎所有我想到的映射组合之后,我似乎仍然无法做到这一点。我只需要我的属性来引用它所属的组以及对分配给它的编辑器的引用,并且每个组应该具有属于它的属性的集合。这对多对多连接表似乎让我感觉很合适。特别是APPLICATION_ATTRIBUTE表。最终我只想要我的应用程序所关注的属性,在这种情况下,那些APPLICATION_ID为4的那些属性。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:2)

真的有点惊讶没有人对这个做出任何回应,但无论如何。我们提出的这种映射情况的答案/解决方案,我试图避免开始,但结果真的是最好的方法,是在数据库中创建一些自定义视图,连接在一起我需要的特定于应用程序的数据,然后将我的应用程序的域对象映射到这些视图。这至少部分起作用,因为我需要从这些表中获取的信息对于这个应用程序来说是只读的,但即使我需要写入表格,我也很确定(虽然没有验证,因为我没有'在这种情况下确实需要)我可以将我的视图设置为可写,并且也可以工作。

Hat tip to @robconery