需要FluentNHibernate映射语法帮助

需要FluentNHibernate映射语法帮助,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我在为以下数据模型和域对象找出合适的FluentNHibernate映射语法时遇到了一些问题。以下是我正在研究的数据模型: 我正在尝试将以下域对象映射到该模型: namespace FluentNHibernateSandbox.Entities { public abstract class EntityBase { public virtual long Id { get; set; } } } namespace FluentNHibernate

我在为以下数据模型和域对象找出合适的FluentNHibernate映射语法时遇到了一些问题。以下是我正在研究的数据模型:

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

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; }
    }
}
名称空间FluentNHibernateSandbox.Entities
{
公共抽象类EntityBase
{
公共虚拟长Id{get;set;}
}
}
命名空间FluentNHibernateSandbox.Entities
{
公共类属性:EntityBase
{
公共虚拟字符串名称{get;set;}
公共虚拟字符串标签{get;set;}
公共虚拟字符串描述{get;set;}
公共虚拟整数排序器{get;set;}
公共虚拟组{get;set;}
公共虚拟编辑器{get;set;}
}
}
命名空间FluentNHibernateSandbox.Entities
{
公共类组:EntityBase
{
公共虚拟字符串名称{get;set;}
公共虚拟字符串标签{get;set;}
公共虚拟字符串描述{get;set;}
公共虚拟整数排序器{get;set;}
公共虚拟IList属性{get;set;}
}
}
命名空间FluentNHibernateSandbox.Entities
{
公共类编辑器:EntityBase
{
公共虚拟字符串ViewName{get;set;}
公共虚拟字符串WorkerClassName{get;set;}
}
}
总的来说,我最终想要的似乎并不是那么难做到,但在尝试了我能想到的所有映射组合之后,我似乎仍然无法正确实现它。我只需要我的属性有一个对它所属的组的引用和一个对分配给它的编辑器的引用,每个组都应该有一个属于它的属性集合。这两个多对多联接表似乎让我感到很舒服。特别是应用程序属性表。最终,我只想要我的应用程序所关心的属性,在本例中,是那些应用程序的ID为4的属性


任何帮助都将不胜感激。谢谢。

真的有点奇怪,没有人对此做出回应,但无论如何。对于这种映射情况,我们提出的答案/解决方案是,在数据库中创建一些自定义视图,将我需要的所有特定于应用程序的数据连接在一起,然后将我的应用程序的域对象映射到这些视图,这是我一开始试图避免的,但事实证明这是最好的方法。这至少在一定程度上起了作用,因为我需要从这些表中获取的信息对于这个应用程序来说是只读的,但即使我需要写入这些表,我也非常确定(尽管我没有验证,因为在本例中我并不真的需要)我可以将视图设置为可写的,这也会起作用


.

哈哈,那是无价的。这对你来说是件好事——这才是最重要的。